在Redshift中,通過SQL腳本只要將結束日期與下一條記錄的結束日期之間的差距爲32天或更短(< = 32)合併爲單個以連續月份的最小開始日期作爲輸出開始日期和最大結束日期作爲輸出結束日期進行記錄。開始日期結束日期合併行
下面的輸入數據是指表中的數據,也列出了預期的輸出。輸入數據列於ORDER BY ID,STARTDT,ENDDT in ASC
。
例如,在下表中,考慮ID 100,第一個記錄的結尾和下一個記錄的開始之間的gab < = 32,但是第二個記錄結束日期和第三個記錄開始日期之間的差距大於32天,因此前兩個記錄合併爲一個記錄,即(ID),MIN(STARTSDT),MAX(ENDDT)
,其對應於預期輸出中的第一記錄。同樣,輸入數據中的3到4條記錄之間的gab落在32天內,因此這2條記錄將合併爲單個記錄,這對應於預期輸出中的第二條記錄。
輸入數據:
ID STARTDT ENDDT
100 2000-01-01 2000-01-31
100 2000-02-01 2000-02-29
100 2000-05-01 2000-05-31
100 2000-06-01 2000-06-30
100 2000-09-01 2000-09-30
100 2000-10-01 2000-10-31
101 2012-06-01 2012-06-30
101 2012-07-01 2012-07-31
102 2000-01-01 2000-01-31
103 2013-03-01 2013-03-31
103 2013-05-01 2013-05-31
預期輸出:
ID MIN_STARTDT MAX_END_DT
100 2000-01-01 2000-02-29
100 2000-05-01 2000-06-30
100 2000-09-01 2000-10-31
101 2012-06-01 2012-07-31
102 2000-01-01 2000-01-31
103 2013-03-01 2013-03-31
103 2013-05-01 2013-05-31
查詢不能正常工作。「00918. 00000 - ‘含糊不清的’行6 –
以上查詢是不會放棄希望的結果列 –