需要以下SQL语句: 如果填充了日期字段之一,则需要从这三个字段中填充所有三个字段。
表格:
ID | 开始日期| Middle_Date | End_Date |许可证
例如:
如果ID 1具有开始日期,否中间日期,否结束日期并具有许可,则结果应显示在其中。
如果ID 2具有开始日期,具有中间日期,但没有结束日期,并且具有许可,则结果应显示在其中。
如果ID 3没有开始日期,没有中间日期但没有结束日期并且具有许可,则此ID不应显示在结果。
如果ID 4具有开始日期,具有中间日期和具有结束日期并且具有许可,则该结果不应显示在结果中。
如果ID 5具有开始日期,否中间日期,但是具有结束日期并具有许可,则结果应显示在其中。
答案 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
条件。