2017-04-12 85 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