You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CASE语句检测空日期并筛选待支付费用无发票记录

SQL语句修正与建议

你的需求是筛选**存在待支付费用(pd.[Plan Fee]不为空)且未记录发票开具日期(pd.[Raise Plan Fee]为空)**的记录,原SQL语句存在语法错误,而且这个场景完全不需要用到CASE语句——CASE多用于字段值的分支转换或输出,并非筛选条件的首选方案。

原语句的问题

  1. CASE语法格式错误:正确的CASE结构要么是CASE 字段 WHEN 值 THEN ... ELSE ... END,要么是CASE WHEN 条件 THEN ... ELSE ... END,你的写法既不符合规范,也缺少END结尾。
  2. 空值判断语法错误:SQL中判断字段非空必须用IS NOT NULL,判断空值用IS NULL,不能写成WHEN NOT NULL这类格式。

正确的SQL写法

直接用WHERE条件组合即可实现需求:

SELECT * 
FROM vw_ProjectsDetailed AS pd 
WHERE pd.[Plan Fee] IS NOT NULL 
  AND pd.[Raise Plan Fee] IS NULL;

补充:CASE语句的正确用法示例(供学习参考)

如果需要在查询结果中添加状态标记(比如标记出符合你需求的记录),可以用CASE语句:

SELECT 
    *,
    CASE 
        WHEN pd.[Plan Fee] IS NOT NULL AND pd.[Raise Plan Fee] IS NULL 
        THEN '待开票'
        ELSE '已处理/无待支付费用'
    END AS 状态说明
FROM vw_ProjectsDetailed AS pd;

内容的提问来源于stack exchange,提问作者Leighton Morris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:09:24