簡體   English   中英

需要 SQL 中的 YTD 和 MTD 計算

[英]Need YTD and MTD calculations in SQL

Date       Amt  ytd mtd
01-Jan-21   1   2   2
01-Jan-21   1   2   2
02-Jan-21   1   3   3
03-Jan-21   1   4   4
01-Feb-21   1   5   1
02-Feb-21   1   6   2
03-Feb-21   1   7   3
04-Feb-21   1   8   4
05-Feb-21   1   9   5
01-Mar-21   1   10  1
02-Mar-21   1   11  2
03-Mar-21   1   12  3
04-Mar-21   1   13  4
01-Apr-21   1   14  1
02-Apr-21   1   15  2
03-Apr-21   1   16  3
01-May-21   1   17  1
02-May-21   1   18  2
03-May-21   1   19  3
04-May-21   1   20  4
05-May-21   1   21  5
06-May-21   1   22  6

我有前兩列(日期、時間),我需要 MS SQL 中的 YTD 和 MTD 列,以便我可以顯示上表。

似乎使用滾動計數來計算 Oracle 源中的 ytd 和 mtd。
(就個人而言,我更喜歡 RANK 或 DENSE_RANK)

並且由於 Oracle 日期戳可以按原樣轉換為 DATE。

 SELECT [Date], Amt, ytd = COUNT(*) OVER (ORDER BY CAST([Date] AS DATE)), mtd = COUNT(*) OVER (PARTITION BY EOMONTH(CAST([Date] AS DATE)) ORDER BY CAST([Date] AS DATE)) FROM your_table ORDER BY CAST([Date] AS DATE)
日期 安特 年初至今 mtd
21 年 1 月 1 日 1 2 2
21 年 1 月 1 日 1 2 2
21 年 1 月 2 日 1 3 3
21 年 1 月 3 日 1 4 4
21 年 2 月 1 日 1 5 1
21 年 2 月 2 日 1 6 2
21 年 2 月 3 日 1 7 3
21 年 2 月 4 日 1 8 4
21 年 2 月 5 日 1 9 5

db<> 在這里擺弄

暫無
暫無

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

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