對于不同的投資組合和策略,我有幾年的每日利潤。對于每個日期、投資組合和策略,我都希望看到每日利潤(由于已經可用,因此未計算),以及 MTD、QTD、YTD 和 LTD 值。我已經用一些嵌套的 while 回圈完成了這個,但需要永遠,我相當有信心這可以通過一些連接來完成。如果有人能帶我過去,將不勝感激。該練習的簡化版本如下。前 4 列已經可用,正確的是我想要完成的:
| 日期 | GROUP_1 | GROUP_2 | 每日利潤 | MTD | QTD | 年初至今 | 有限公司 |
|---|---|---|---|---|---|---|---|
| 2021-01-15 | 一個 | X | 1 | 1 | 1 | 1 | 1 |
| 2021-01-19 | 一個 | X | 5 | 6 | 6 | 6 | 6 |
| 2021-01-20 | 一個 | X | 2 | 8 | 8 | 8 | 8 |
| 2021-01-24 | 一個 | X | 5 | 13 | 13 | 13 | 13 |
| 2021-02-19 | 一個 | X | 5 | 5 | 18 | 18 | 18 |
| 2021-02-23 | 一個 | 是 | 4 | 4 | 4 | 4 | 4 |
| 2021-03-21 | 一個 | X | 1 | 1 | 19 | 19 | 19 |
| 2021-03-25 | 一個 | 是 | 5 | 5 | 9 | 9 | 9 |
| 2021-04-20 | 一個 | X | 5 | 5 | 5 | 24 | 24 |
| 2021-04-24 | 一個 | 是 | 2 | 2 | 2 | 11 | 11 |
| 2021-05-20 | 一個 | X | 3 | 3 | 8 | 27 | 27 |
| 2021-05-24 | 一個 | 是 | 4 | 4 | 6 | 15 | 15 |
| 2021-01-15 | 乙 | 是 | 5 | 5 | 5 | 5 | 5 |
| 2021-01-19 | 乙 | 是 | 3 | 8 | 8 | 8 | 8 |
| 2021-01-20 | 乙 | 是 | 1 | 9 | 9 | 9 | 9 |
| 2021-01-24 | 乙 | 是 | 2 | 11 | 11 | 11 | 11 |
| 2021-02-19 | 乙 | 是 | 4 | 4 | 15 | 15 | 15 |
| 2021-02-23 | 乙 | 是 | 5 | 9 | 20 | 20 | 20 |
| 2021-03-21 | 乙 | 是 | 1 | 1 | 21 | 21 | 21 |
| 2021-03-25 | 乙 | 是 | 1 | 2 | 22 | 22 | 22 |
| 2021-04-20 | 乙 | 是 | 4 | 4 | 4 | 26 | 26 |
| 2021-04-24 | 乙 | 是 | 5 | 9 | 9 | 31 | 31 |
| 2021-05-20 | 乙 | 是 | 1 | 1 | 10 | 32 | 32 |
| 2021-05-24 | 乙 | 是 | 2 | 3 | 12 | 34 | 34 |
uj5u.com熱心網友回復:
類似于以下 SQL 腳本的內容應該可以解決問題:
select
value_date,
group_1,
group_2,
daily_profits,
sum(daily_profits) over (partition by datepart(yy, value_date), datepart(mm, value_date), group_1, group_2 order by value_date, group_1, group_2 rows unbounded preceding) as MTD,
sum(daily_profits) over (partition by datepart(yy, value_date), datepart(qq, value_date), group_1, group_2 order by value_date, group_1, group_2 rows unbounded preceding) as QTD,
sum(daily_profits) over (partition by datepart(yy, value_date), group_1, group_2 order by value_date, group_1, group_2 rows unbounded preceding) as YTD,
sum(daily_profits) over (partition by group_1, group_2 order by value_date, group_1, group_2 rows unbounded preceding) as LTD
from agg_profit
order by value_date, group_1, group_2
SQL Fiddle 供參考:http ://sqlfiddle.com/#!18/d6c5f/1
檔案可以在這里找到:https : //docs.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-2017
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/397700.html
標籤:sql sql-server 查询语句 sql-server-2017
上一篇:CASE陳述句SQL中回傳多列
