SQL вычисляет MTD из YTD

Пытаюсь посчитать в SQL MTD стоимость стола.

У меня есть следующая таблица:

годпользовательмесяцтипСтоимостьпустой
2021а1Тип 1100
2021а2Тип 1200
2021а3Тип 1350
2022а1Тип 150
2022а2Тип 1350
2021б1Тип 1100
2021б2Тип 1300

Теперь мне нужно иметь стоимость MTD по годам, пользователям и типам.

годпользовательмесяцтипСтоимостьстоимостьMTDпустой
2021а1Тип 110100
2021а2Тип 120100
2021а3Тип 135150
2022а1Тип 1550
2022а2Тип 135300
2021б1Тип 110100
2021б2Тип 130200

Могу ли я сделать это с запросом в SQL?

я пробовал так, но это не работает:

SELECT t1.year, t1.user, t1.month, t1.type, t1.cost, 
iif (t1.month = '1', t1.cost, t1.cost- t2.cost) AS costMTD, 0 AS blank
FROM dbo.usercosts AS t1 INNER JOIN dbo.usercosts AS t2 
ON t1.year = t2.year 
AND t1.user= t2.user 
AND t1.type= t2.type 
AND t2.month = iif (t2.month = '1', '1', t1.month - 1)

Спасибо

Какую СУБД вы используете? Я опубликовал стандартный ответ SQL, который должен работать в большинстве СУБД, но рекомендуется (на самом деле, скорее требуется) помечать запросы SQL с помощью MBS, на которую они ссылаются.

Thorsten Kettner 11.05.2022 15:26
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать LAG, чтобы увидеть стоимость предыдущей строки.

select 
  year, user, month, type, cost, 
  cost - coalesce(lag(cost) over(partition by user order by year, month), 0) as costmtd, 
  0 as blank
from dbo.usercosts as
order by user, year, month;

Идеальный. Большое вам спасибо: D, что решили мою проблему. Мне просто нужно было отрегулировать 1 мелочь. in ...over(partition by user .... тип отсутствует. Вот скорректированный код, который отлично работал: cost- COALESCE (lag(cost) OVER (partition BY user, type ORDER BY year, type, month), 0) КАК стоит

Edi Isma 11.05.2022 17:46

Другие вопросы по теме