【发布时间】:2015-09-27 13:46:20
【问题描述】:
我需要在 SQL Server 2012 中对孤岛进行编号。孤岛定义为一组行,其中 DateFrom 和 DateTo 在同一 ItemId 内没有天间隔。
以下数据集:
CREATE TABLE #Ranges (ItemId INT, DateFrom DATETIME, DateTo DATETIME)
INSERT INTO #Ranges VALUES (1,'2015-01-31','2015-02-17')
INSERT INTO #Ranges VALUES (1,'2015-02-18','2015-03-31')
INSERT INTO #Ranges VALUES (1,'2015-04-14','2015-05-21')
INSERT INTO #Ranges VALUES (2,'2015-07-12','2015-07-19')
INSERT INTO #Ranges VALUES (2,'2015-07-20','2015-07-24')
INSERT INTO #Ranges VALUES (2,'2015-07-26','2015-08-02')
INSERT INTO #Ranges VALUES (2,'2015-08-03','2015-08-07')
应如下编号:
ItemId; DateFrom; DateTo; Number
1; 2015-01-31; 2015-02-17; 1
1; 2015-02-18; 2015-03-31; 1
1; 2015-04-14; 2015-05-21; 2
2; 2015-07-12; 2015-07-19; 3
2; 2015-07-20; 2015-07-24; 3
2; 2015-07-26; 2015-08-02; 4
2; 2015-08-03; 2015-08-07; 4
非常感谢任何帮助。
问候, 普热梅克
【问题讨论】:
-
如果您在 2012 年,您应该使用
DATE而不是DATETIME来存储日期值。 -
是的,谢谢。
标签: sql sql-server-2012 gaps-and-islands