如何在sql中按顺序排列日期范围

时间:2015-09-18 15:51:27

标签: sql sql-server sql-server-2008

这里我需要按usr_id顺序排列日期范围。

CREATE TABLE #temp(st_date DATE,end_date DATE,usr_id INT)
INSERT  #temp 
VALUES ('2007-03-01  ','2015-01-31  ',1),
('2015-02-01  ','2015-05-05  ',1),
  ('2015-05-06  ','2017-04-01  ',1),
  ('2007-03-01  ','2014-01-31  ',2),
  ('2007-03-01  ','2015-01-31  ',3),
  ('2015-02-01  ','2017-04-01  ',3),
  ('2020-02-01  ','2020-06-05  ',1),
  ('2020-06-06  ','2020-08-08  ',1)
SELECT t2.st_date,t1.end_date,t1.usr_id FROM #temp t1 ,#temp t2
WHERE  t1.st_date =  dateadd(dd,+1,t2.end_date) AND t2.usr_id = t1.usr_id

DROP TABLE #temp

我的回答应该是这样的。

st_date      end_date    usr_id 
2007-03-01   2017-04-01     1
2020-02-01   2020-08-08     1
2007-03-01   2017-04-01     3
2007-03-01   2014-01-31     2

1 个答案:

答案 0 :(得分:0)

这应该有效。它首先由usr_id订购,然后在用户分组中订购,按订单排序。

Select * from #temp
Order by usr_id, st_date