Изменить значения внутри статистической функции на основе значения в другом столбце? - PullRequest
0 голосов
/ 13 февраля 2019

У меня два запроса.Первый просто перечисляет отдельные строки, и если CANCELCODE равен 1, тогда другое поле становится отрицательным, как это:

  CASE t.CancelCode
       WHEN '1'
       THEN t.Quantity * -1
       ELSE t.Quantity
   END AS Quantity,...

Второй запрос суммирует итоговую сумму, но как я могу сделать так, чтобы он проверял условие как выше?

     SUM(t.Quantity) AS Quantity, --case t.cancelcode is 1 then negative the value

Есть ли способ сделать это, или я должен поместить первый набор результатов во временную таблицу, а затем использовать это, так как в этот момент значение является отрицательным / положительным по мере необходимости?

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Это то, что вы хотите?

SUM(CASE t.CancelCode WHEN '1'
        THEN t.Quantity * -1
        ELSE t.Quantity
    END) AS Quantity,...
0 голосов
/ 13 февраля 2019

Используйте применить, это более эффективно, если вам нужно использовать этот случай более одного раза

select sum(a.Quantity)
from yourtable t
cross apply (
select CASE t.CancelCode
       WHEN '1'
       THEN t.Quantity * -1
       ELSE t.Quantity
   END AS Quantity
) a
0 голосов
/ 13 февраля 2019

Вы можете заключить свой оператор case в функцию SUM: -

SUM(CASE WHEN t.CancelCode = '1' THEN t.Quantity * -1 ELSE t.Quantity END) AS Quantity
...