Добавление простой формулы вычитания в оператор case when - PullRequest
0 голосов
/ 06 августа 2020

Я пишу сценарий sql, в котором я хочу добавить в сценарий формулу вычитания. Моя проблема в том, что, когда я добавляю это ЗАЯВЛЕНИЕ, мой сценарий не запускается. Я читал, что вам нужно добавить паранетики вокруг формулы, что я и сделал, и когда я сделаю это без CASE WHEN, это будет отлично работать. Можете ли вы просто не использовать формулы в заявлении case?

В приведенном ниже заявлении у меня есть столбец TotalWeightLoss, где это совокупный общий вес, потерянный человеком. Поэтому я пытаюсь увидеть потерянный за месяц вес, а не его совокупный результат.

SELECT *
       ,case when rownmbr=1 then TotalWeightLoss else (TotalWeightLoss - LAG(TotalWeightLoss) OVER (PARTITION BY AccountNumber ORDER BY ProcessDate, ProcessDate)) AS AmountLost
from cte;"))

Спасибо!

1 Ответ

0 голосов
/ 06 августа 2020

Помимо отсутствующего END: если предположить, что rownmbr основан на вычислении ROW_NUMBER, это можно упростить до

TotalWeightLoss
 - LAG(TotalWeightLoss,1,0) -- LAG supports a default for a missing value 
   OVER (PARTITION BY AccountNumber 
         ORDER BY ProcessDate, ProcessDate) AS AmountLost
...