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

SQL来标识未填充所有三个必填字段的位置,sql,Sql,需要SQL语句来执行以下操作: 如果填充了其中一个日期字段,则需要从这三个字段填充所有三个字段 表: ID |开始日期|中间日期|结束日期许可证 例如: 如果ID 1有开始日期、无中间日期、无结束日期,并且有许可证,则应在结果中显示 如果ID 2有开始日期,有中间日期,但没有结束日期,并且有许可证,则应在结果中显示 如果ID 3没有开始日期,没有中间日期,但没有结束日期,并且有许可证,则该结果不应显示 如果ID 4有开始日期,有中间日期有结束日期,并且有许可证,则结果中不应显示此项 如果ID 5

需要SQL语句来执行以下操作: 如果填充了其中一个日期字段,则需要从这三个字段填充所有三个字段

表:

ID |开始日期|中间日期|结束日期许可证

例如:

如果ID 1有开始日期、无中间日期、无结束日期,并且有许可证,则应在结果中显示

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

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

如果ID 4有开始日期,有中间日期结束日期,并且有许可证,则结果中不应显示此项


如果ID 5有开始日期,没有中间日期,但有结束日期,并且有许可证,则这应该显示在结果中。

下面的查询将帮助您:

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);
上面的查询将返回日期不为null的所有查询。此外,如前所述,当所有日期都不为空时,它将不会返回。

我相信您希望:

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)
          )

这几乎是将您的条件直接转换为
条件,其中
条件。

如何填充?标准是什么?试着研究
Coalesce
function@pran86最好共享您期望的示例输出,这样每个人都能清楚地了解示例所包含的需求。谢谢大家。@pran86请看我的最新答案谢谢!我想选择整个表,所以我应该在开始时使用“select*from table name”。但这似乎不起作用。@pran86使用Select*时您面临的问题是什么?谢谢,但当其中一个已填写时,您需要确定哪些未填写。