簡體   English   中英

SQL 從 YTD 中計算出 MTD

[英]SQL calculate MTD out of YTD

我嘗試在 SQL MTD 中計算表的成本。

我有下表:

用戶 類型 成本 空白的
2021 一個 1 類型1 10 0
2021 一個 2 類型1 20 0
2021 一個 3 類型1 35 0
2022 一個 1 類型1 5 0
2022 一個 2 類型1 35 0
2021 b 1 類型1 10 0
2021 b 2 類型1 30 0

我現在需要的是每年、用戶和類型的 MTD 成本

用戶 類型 成本 成本MTD 空白的
2021 一個 1 類型1 10 10 0
2021 一個 2 類型1 20 10 0
2021 一個 3 類型1 35 15 0
2022 一個 1 類型1 5 5 0
2022 一個 2 類型1 35 30 0
2021 b 1 類型1 10 10 0
2021 b 2 類型1 30 20 0

我可以用 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)

您可以使用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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM