2016-08-12 70 views
0

我想从enddate中减去不同行上的startdate,但仅限于相同的代码。从不同的行中减去

例如:

  • 我想做startdate行2 C002 (2012-07-01)减去enddate行1 C002 (2012-06-30)
    • 结果应该是1(天)行2.没有数据应该在第1行
  • 第4行应显示1(天)为好。

我该如何去做这件事?

row code  startdate     enddate 
1  C002  2011-07-01 00:00:00.000 2012-06-30 00:00:00.000 
2  C002  2012-07-01 00:00:00.000 2013-06-30 00:00:00.000 
3  C003  2011-07-01 00:00:00.000 2012-06-30 00:00:00.000 
4  C003  2012-07-01 00:00:00.000 2013-06-30 00:00:00.000 
+0

听起来好像要LEAD(),但你能展示预期的产出吗? – scsimon

回答

0
select max(row),code,datediff(day,max(startdate),min(enddate)) as ouputtt 
from table 
group by 
code 
0

尝试这个 -

Select x.code, y.startdate-x.enddate 
From table1 x left outer join table1 y on 
X.code=Y.code 
Where 
X.enddate<y.startdate 
0

您可以使用此查询,其将所请求的值作为一个附加列:

select row, code, startdate, enddate, 
     datediff('d', lag(enddate) over (partition by code order by row1), startdate) df 
from mytable