SQL识别所有三个必填字段未填充的位置

时间:2018-06-22 08:44:02

标签: sql

需要以下SQL语句: 如果填充了日期字段之一,则需要从这三个字段中填充所有三个字段。

表格:

ID | 开始日期| Middle_Date | End_Date |许可证

例如:

如果ID 1具有开始日期,否中间日期,否结束日期并具有许可,则结果应显示在其中。

如果ID 2具有开始日期,具有中间日期,但没有结束日期,并且具有许可,则结果应显示在其中。

如果ID 3没有开始日期,没有中间日期但没有结束日期并且具有许可,则此ID不应显示在结果。

如果ID 4具有开始日期,具有中间日期和具有结束日期并且具有许可,则该结果不应显示在结果中。

如果ID 5具有开始日期,否中间日期,但是具有结束日期并具有许可,则结果应显示在其中。

2 个答案:

答案 0 :(得分:0)

以下查询将为您提供帮助:

select *
from tablename
where (start_date is not null or middle_date is not null or end_date is not null) and 
      (start_date is null or middle_date is null or end_date is null);

上面的查询将返回所有日期都不为空的所有查询。另外,正如所问的那样,当所有日期都不为空时,它将不会返回。

答案 1 :(得分:0)

我相信你想要

select t.*
from t
where not ((start_date is not null and middle_date is not null or end_date and not null) or 
           (start_date is null and middle_date is null and end_date is null)
          )

这几乎是将您的条件直接转换为where条件。