[英]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.