[英]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
你甚至不需要CASE
, COALESCE
会做。
由于这很短,我会坚持简单地重复表达式:
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.