繁体   English   中英

如何将创建的列用作过滤器

[英]How can I use a created column as a filter

我正在尝试解决我在 SQL Server 中编写的这个查询的方法。

我需要能够在DateDiff函数中使用CASE语句的结果。

  • 如果相遇结束日期为空,那么我想使用相遇开始日期进行日期差异计算。

  • 如果遇到结束日期不为空,那么我想使用遇到结束日期进行日期差异计算。

但是,当我将dateofservice放入datediff函数时,我不断收到“无效的列名”错误。

这是我的代码:

Select 
    e.encounterid,
    Case 
        when e.encounterenddate = null
            then e.encounterbegindate
        else e.encounterenddate
    end as dateofservice,
    rf.submissiondate,
    datediff(day, dateofservice, rf.submissiondate) as lagtime,
    rf.healthplancode,
    rf.transactiontypeid
from 
    udt_encounter as E
join 
    udt_receivedfile as RF on e.receivedfileid = rf.receivedfileid
where 
    rf.healthplancode = '00'
    and rf.transactiontypeid = 1
    and rf.submissiondate between '2020-01-01' and '2020-06-30'
order by 
    encounter.id asc

你甚至不需要CASECOALESCE会做。
由于这很短,我会坚持简单地重复表达式:

SELECT 
    e.encounterid,
    COALESCE(e.encounterenddate, e.encounterbegindate) AS dateofservice
    ,rf.submissiondate
    ,datediff(day, COALESCE(e.encounterenddate, e.encounterbegindate), rf.submissiondate) AS lagtime
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM