我有一個用戶表與INT格式(年月日),如下的日期範圍沿:SQL:如何從給定的一組日期範圍中找到唯一的日期範圍?
Id Name StartDate EndDate
1 abc 20160216 20160217
1 abc 20160228 20160228
1 abc 20160301 20160301
1 abc 20160301 20160302
1 abc 20160301 20170401
1 abc 20160302 20160302
1 abc 20160303 20160303
1 abc 20160303 20170401
3 def 20160217 20160217
3 def 20160218 20160229
3 def 20160218 20160229
3 def 20160225 20160225
3 def 20160229 20160229
3 def 20160302 20160302
我需要找到獨特的連續日期範圍爲每一位用戶(沒有任何重複)。輸出應該喜歡這個
Id Name StartDate EndDate
1 abc 20160216 20160217
1 abc 20160228 20160228
1 abc 20160301 20170401
3 def 20160217 20160229
3 def 20160302 20160302
有了這個腳本,您可以創建表:
CREATE TABLE #data
(
Id INT,
Name VARCHAR(50),
StartDate INT,
EndDate INT,
)
INSERT INTO #data VALUES(1,'abc',20160216,20160217)
INSERT INTO #data VALUES(1,'abc',20160228,20160228)
INSERT INTO #data VALUES(1,'abc',20160301,20160301)
INSERT INTO #data VALUES(1,'abc',20160301,20160302)
INSERT INTO #data VALUES(1,'abc',20160301,20170401)
INSERT INTO #data VALUES(1,'abc',20160302,20160302)
INSERT INTO #data VALUES(1,'abc',20160303,20160303)
INSERT INTO #data VALUES(1,'abc',20160303,20170401)
INSERT INTO #data VALUES(3,'def',20160217,20160217)
INSERT INTO #data VALUES(3,'def',20160218,20160229)
INSERT INTO #data VALUES(3,'def',20160218,20160229)
INSERT INTO #data VALUES(3,'def',20160225,20160225)
INSERT INTO #data VALUES(3,'def',20160229,20160229)
INSERT INTO #data VALUES(3,'def',20160302,20160302)
編輯: 總之,如果我有數據這樣
Id Name StartDate EndDate
1 abc 20160216 20160217
**1 abc 20160301 20160302
1 abc 20160301 20160303**
我需要輸出如下所示。
Id Name StartDate EndDate
1 abc 20160216 20160217
**1 abc 20160301 20160303**
你能告訴你在試圖做到這一點有什麼碼這麼遠? – Matthew
如果我使用'select distinct',它會返回更多謝謝您的預期輸出。看看你的輸入和你想輸出的東西,你的問題沒有意義。請解釋一下「每個用戶的連續唯一日期範圍」是什麼意思,通過解釋您的預期輸出或更新您的預期輸出以匹配實際獲得的樣本數據。 – jkdba
我編輯了我的問題。用戶有兩個日期範圍March1-March2和March1-March3。我只想要March1-March3,因爲March1-March2是March1-March3的一部分, –