以下是我的查询
select p.result ,
(case when p.parameterID = 'AVA' then sum(p.Result) else 0 end) as [AVA],
(case parameterId when '2D' then sum(p.Result) else 0 end) [2D],
(case parameterId when 'Sd' then sum(p.Result) else 0 end ) [Sd]
FROM Table1 p
WHERE p.parameterID
in ('AVA', '2D', 'Sd') and p.ResultNo=-1
and ( p.result * 10000 < 1.0 )
group by
p.result, p.parameterID
我在上面查询我正在使用的where子句(p.result * 10000&lt; 1.0)并为每个值(p.result * 10000&lt; 1.0)评估它 我的要求是更改此查询,它应仅适用于[AVA] p.result * 10000&lt; 1.0
我想在where子句(p.result * 10000&lt; 1.0)应该应用/仅检查列[AVA]它不应该适用于所有列。
答案 0 :(得分:2)
试试这个:
WHERE p.parameterID
in ('AVA', '2D', 'Sd') and p.ResultNo=-1
and
(
( p.parameterID = 'AVA' AND p.result * 10000 < 1.0 ) OR ( p.parameterID <> 'AVA' )
)
group by
p.result, p.parameterID
答案 1 :(得分:0)
我更换了解决方案(例如当p.parameterID =&#39; AVA&#39;然后sum(p.Result),否则0结束)为[AVA],下面的行(p.ParameterId =&的情况) #39; AVA&#39;然后求和(CASE当(p.resultvalue * 1)&lt; 1.0然后p.resultvalue else 0 end)else 0 END)as [AVA]并删除(p.result * 10000&lt; 1.0)来自where子句