2017-02-17 102 views
1

我有一個表,看起來像這樣的交叉點:更新記錄取決於日期

ID | Start | End  | Flag1 | Flag2 
--------------------------------------------  
1 | 1900-01-01 | 1900-01-01 | 0 | 1 
1 | 1900-01-01 | 2000-01-01 | 1 | 0 
2 | 2010-01-01 | 2020-01-01 | 0 | 0 

對於ID的任何日期範圍,標誌1和2可以被設置爲1或0。對於所述第一記錄,他只是flag2。對於第二張唱片,他只是旗幟1。

有沒有辦法更新記錄的方式,其標誌在開始和結束日期的交集處都是1?基本上:

ID | Start | End  | Flag1 | Flag2 
--------------------------------------------  
1 | 1900-01-01 | 1900-01-01 | 1 | 1 
1 | 1900-01-02 | 2000-01-01 | 1 | 0 
2 | 2010-01-01 | 2020-01-01 | 0 | 0 

我試過使用一組,但它不會按預期返回結果集。 任何幫助,將不勝感激。非常感謝你!

+0

順便說一句,怎麼你的ID列有重複的值? – AHBagheri

+0

哦,那個ID不是關鍵,所以它可以重複。 – pauloutboy

+0

以下答案有用嗎?如果是,請投票。 – AHBagheri

回答

1

您需要使用自加入才能達到預期結果。

UPDATE t1 
SET t1.Flag1 = 1, t1.Flag2 = 1 
FROM 
mytable t1 join mytable t2 on t1.ID = t2.ID 
WHERE t1.Start_Date = t2.End_Date 
1

爲什麼不是這個?

UPDATE [mytable] SET [flag1] = 1, [flag2] = 1 WHERE [startdate] = [enddate]