我有一个返回结果的结果集,
ID Q_Number INC_Date1 INC_Date2 OUT_Date1 OUT_Date2
--------------------------------------------------------------------------------------
8322445 Q8322445 2014-03-06 00:00:00 2014-05-14 13:31:00 NULL NULL
8322445 Q8322445 NULL NULL 2014-05-16 09:22:00 2014-05-20 07:29:00
实际上我想获得所有列之间的日期差异。
它适用于INC_Date 2和INC_Date1,OUT_Date2和OUT_Date1之间的区别,但它不适用于OUT_Date1 - INC_Date2。
我不确定整个牌桌的最大日期是否合适。
以下是我想要的输出示例
ID Q_Number INC1INC2Diff INC2OUT1Diff OUT1OUT2Diff
----------------------------------------------------------------------------
8322445 Q8322445 69 1 3
我该怎么做?
答案 0 :(得分:0)
如果没有看到您的查询,这是一个猜测,但要合并示例中的行,您可以使用这样的聚合:
select
ID,
Q_Number,
max(INC_Date1) as INC_Date1,
max(INC_Date2) as INC_Date2,
max(OUT_Date1) as OUT_Date1,
max(OUT_Date2) as OUT_Date2
from
table -- or from your query used as a derived table
group by
id, Q_Number
更新问题中的更改:
select
ID,
Q_Number,
DATEDIFF(d,max(INC_Date1), max(INC_Date2) ) as INC1INC2Diff,
DATEDIFF(d,max(INC_Date2), max(OUT_Date1) ) as INC2OUT1Diff,
DATEDIFF(d,max(OUT_Date1), max(OUT_Date2) ) as OUT1OUT2Diff
from
t
group by
id, Q_Number
答案 1 :(得分:0)
如果你总是知道
你可以用ID和/或Q_Number上的INNER JOIN做一个简单的SELECT,具体取决于你的键选择NON NULL值。
答案 2 :(得分:0)
在不使用SP和游标的情况下,您似乎应该执行两个步骤(尽管如果需要,它可能是一个原子事务。注意:如果第二个没有问题,请不要在一个事务中执行这两个步骤命令不成功,而是再试一次。)