嗨,我有以下代码,如果您在下面看到A.PP数量的总和,我会提及> = 2和> = 5如果大于2,则必须乘以1000,大于15则等于1500
select *,
case
when b.SCode = 0202 and b.Itcoded = '37.01.123.0001'
and b.MONTHOFDISC = 'march' then
case
when sum(case when b.SCode = 0202 and b.Itcoded = '37.01.123.0001' and b.MONTHOFDISC = 'march'
then b.appqty end) over() >= 2 then (b.AppQty * 1000)
end
when b.SCode = 0202 and b.Itcoded = '37.01.123.0001'
and b.MONTHOFDISC = 'march' then
case
when sum(case when b.SCode = 0202 and b.Itcoded = '37.01.123.0001' and b.MONTHOFDISC = 'march'
then b.appqty end) over() >= 5 then (b.AppQty * 1500)
end
end DiscAmount
我想将b.appqty的值相乘,但它仅与1000相乘,请提供帮助,这在1500的乘法中不起作用
我认为这可以满足您的要求:
(case when b.SCode = 0202 and b.Itcoded = '37.01.123.0001' and b.MONTHOFDISC = 'march'
then (case when sum(case when b.SCode = 0202 and b.Itcoded = '37.01.123.0001' and b.MONTHOFDISC = 'march' then b.appqty end) over () >= 5
then (b.AppQty * 1500)
when sum(case when b.SCode = 0202 and b.Itcoded = '37.01.123.0001' and b.MONTHOFDISC = 'march' then b.appqty end) over () >= 2
then (b.AppQty * 1000)
end)
end) as DiscAmount
您的版本比必要版本复杂得多。但是原因是因为大于5的值也大于2,所以第一个条件始终匹配。关键是要逆转条件以避免此问题。