我知道这个问题有很多变体,但找不到能回答我正在寻找的问题的问题。
我从另一个不再出现在图片中的程序员那里继承了一个数据库和报告。
查询之一使用此代码:
Select
b.HospitalMasterID
,b.TxnSite
,b.PatientID
,b.TxnDate as KeptDate
From
Billing as b
Inner Join Patient as p
on b.HospitalMasterID = p.HospitalMasterID
and b.PatientID = p.PatientID
Where
b._IsServOrItem=1
and b.TxnDate >= '20131001'
and (Case
When b.ExtendedAmount > 0 Then 1
When (Not(p.PlanCode is null)) and (b.listAmount >0) then 1
End = 1)
当我运行查询时,我得到 apx 900,000 行返回。如果我删除 Case 语句,我会返回超过一百万行。
有人可以解释为什么会这样吗?案例陈述究竟在做什么?有没有更好的方法来完成同样的事情。我真的不喜欢这种说法,而且由于缺乏结构,整个报告查询很难阅读。
Sql 的版本是 T-Sql 2012。
谢谢,