2017-04-12 96 views
0

我有4個日期列 - From_Date_A,To_Date_A,From_Date_B,To_Date_B。我想創建一個標誌列來標記From_Date_A和To_Date_A之間的任何日期介於From_Date_B和To_Date_B之間的任何內容。這可能嗎?另外2個日期列之間的2個日期列

+0

你對你的問題的例子嗎?不能很好地理解這個問題 – LONG

回答

1

使用case表達式來檢查重疊的日期範圍:

select * 
    , case when To_Date_A > From_Date_B 
      and To_Date_B > From_Date_A 
     then 1 
     else 0 
     end as Flag 
from t 

這是假設的重疊不包括用於該範圍的初始日期。

是否應該,那麼:

select * 
    , case when To_Date_A >= From_Date_B 
      and To_Date_B >= From_Date_A 
     then 1 
     else 0 
     end as Flag 
from t 

In depth explanation of this overlap check by Charles Bretana

+0

這是完美的!我很感激!另外,由於我是新手,我如何在列和行中顯示我想要的數據示例? – ajc101

+0

@ ajc101您可以使用它從製表符分隔的數據(從excel或其他內容複製)創建文本表https://senseful.github.io/web-tools/text-table/,並將它們格式化爲stackoverflow上的代碼 – SqlZim

+1

@ ajc101如果您覺得它有用,請接受答案。 – ITSGuru