В SQL СЛУЧАЙ МНОЖЕСТВЕННО, КОГДА БОЛЬШЕ, ЧЕМ В РАЗНЫХ КРИТЕРИЯХ - PullRequest
0 голосов
/ 24 апреля 2020

HI У меня есть ниже код, который я хочу, когда сумма A.PP QTY, если вы видите ниже, у меня есть поминание> = 2 и> = 5, когда больше, чем 2, то это должно быть кратно 1000 и 15 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 не работает

1 Ответ

2 голосов
/ 24 апреля 2020

Я думаю, что это то, что вы хотите:

(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, поэтому первое условие всегда совпадает. Ключ должен изменить условия, чтобы избежать этой проблемы.

...