我有以下數據與我一起。我想確保任何特定ID的start_date,end_date和這兩個日期之間的時間段與任何其他ID的日期不重疊。Teradata ROWS UNBOUNDED PRECEDING
ID Start_Date End_Date
101 01-01-2001 31-01-2001
102 01-02-2001 28-02-2001
103 26-02-2001 31-03-2016
104 15-03-2001 30-04-2001
105 01-05-2002 31-05-2002
106 05-12-2002 31-12-2002
107 15-12-2002 05-01-2003
要做到這一點,我在下面的查詢創建:
select id,start_date,end_date,
case
when
end_date < max(end_date) over(order by start_date rows unbounded preceding)
then 'overlapping'
when
start_date < max(end_date) over(order by start_date rows unbounded preceding)
then 'overlapping'
else 'non-overlapping'
end as FLAG from table
我得到以下輸出具有所有標記爲「重疊」,這是不正確的。我認爲,「無界行前」正在當前行也計算: 能否請您讓我知道我錯了:
ID Start_Date End_Date Flag
101 01-01-2001 31-01-2001 Overlapping
102 01-02-2001 28-02-2001 Overlapping
103 26-02-2001 31-03-2016 Overlapping
104 15-03-2001 30-04-2001 Overlapping
105 01-05-2002 31-05-2002 Overlapping
106 05-12-2002 31-12-2002 Overlapping
107 15-12-2002 05-01-2003 Overlapping
當然'行無界preceding'包括當前行,這是一個快捷方式用於'無界前和當前行之間的行'。你能顯示應該返回什麼確切的結果嗎? – dnoeth
你確定ID103進入2016年,而不是2001年? – Beth