wenxin0205
2015-04-29 02:08
采纳率: 100%
浏览 1.8k

求SQL大神!!SQL语句有点复杂~~~

首先谢谢您的回答。
有一张表 表内字段为
主键,计划序号,计划名称,计划开始时间,计划结束时间,版本号(连接版本表)
当前数据为
1,1,name1,2015/02/03,2015/02/05,200
2,2,name2,2015/02/03,2015/02/05,200
3,3,name3,2015/02/03,2015/02/05,200
4,1,name1,2015/02/03,2015/02/05,201
5,2,name2,2015/02/03,2015/02/05,201
6,4,name4,2015/02/03,2015/02/05,201

现在公司要求。。实现一个对比表单,where条件是2个版本号,比200,201,查询结果应该是
1,name1,2015/02/03,2015/02/05,0
2,name2,2015/02/03,2015/02/05,0
3,name3,2015/02/03,2015/02/05,0
4,name4,2015/02/03,2015/02/05,0 最后字段的0是用201版本的开始时间减200版本的开始时间,DIFF函数的那个意思。

其他我现在可以实现,重点的就是 怎么让它显示出来的条数为1234。。。INNER LEFT RIGHT FULL连接都试过了。。实在晕比~~~求高手

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • danielinbiti 2015-04-29 03:07
    已采纳

    1、order by 计划名称,版本号
    2、根据lead和lag函数把下一个版本的字段获取到同一行(怎么实现我的blog中sqlserver,mysql,oracle都已经介绍实现方法了)
    3、剩下的就是你想怎么减就怎么减了。

    已采纳该答案
    打赏 评论
  • 知常曰明 2015-04-29 02:14

    1234不就是计划序号么?

    打赏 评论
  • wenxin0205 2015-04-29 02:34

    额 都显示 - - 显示200版本的时间 201版本的时间 201-200版本的差距时间。

    如果某一个计划 200有 201没有 要求显示出来 出来的格式相当于只有200的这部分 201那部分和差距时间就是NULL

    打赏 评论
  • 232frb 2015-04-29 02:40

    一个最笨的方法就是在统计列直接搜索出条数
    不过这样做效率比较低

    打赏 评论
  • Tiger_Zhao 2015-04-29 02:47

    SQL Server

         SELECT ISNULL(t1.计划序号,t2.计划序号) 计划序号,
               ISNULL(t1.计划名称,t2.计划名称) 计划名称,
               t1.计划开始时间, t1.计划结束时间,
               t2.计划开始时间, t2.计划结束时间,
               DATEDIFF(day,t2.计划开始时间,t1.计划开始时间) 差距时间
          FROM (SELECT * FROM table1 WHERE 版本号=200) t1
     FULL JOIN (SELECT * FROM table1 WHERE 版本号=201) t2
            ON t1.计划序号=t2.计划序号
      ORDER BY 计划序号
    

    结果

        计划序号 计划名称 计划开始时间 计划结束时间 计划开始时间 计划结束时间    差距时间
    ----------- -------- ------------ ------------ ------------ ------------ -----------
              1 name1    2015/02/03   2015/02/05   2015/02/03   2015/02/05             0
              2 name2    2015/02/03   2015/02/05   2015/02/03   2015/02/05             0
              3 name3    2015/02/03   2015/02/05   NULL         NULL                NULL
              4 name4    NULL         NULL         2015/02/03   2015/02/05          NULL
    
    
    打赏 评论

相关推荐 更多相似问题