【发布时间】:2021-01-25 04:57:24
【问题描述】:
我有一个“金额”表,其中包含客户的每月付款。每个客户的每笔付款都有一行。我想从他们第一次支付的月份开始每年汇总他们的付款。例如,在下表中,对于用户 ID 132,我想将他从 2019 年第 9 个月到 2020 年第 8 个月(一整年)的付款汇总为一行,然后从 2020 年第 9 个月到下一个汇总为另一行行。
基本上,我希望根据他们加入的月份将每年的用户数量作为行。我不确定如何使用 SQL 聚合这些数据,希望能在此提供帮助。
示例表(如果更简单,我可以将年月列合并为原始数据本身的日期列)>
+--------+------+-------+--------+
| userID | year | month | amount |
+--------+------+-------+--------+
| 132 | 2019 | 9 | 836 |
+--------+------+-------+--------+
| 132 | 2019 | 10 | 702 |
+--------+------+-------+--------+
| 132 | 2019 | 11 | 161 |
+--------+------+-------+--------+
| 132 | 2019 | 12 | 955 |
+--------+------+-------+--------+
| 132 | 2020 | 1 | 969 |
+--------+------+-------+--------+
| 132 | 2020 | 2 | 977 |
+--------+------+-------+--------+
| 132 | 2020 | 3 | 986 |
+--------+------+-------+--------+
| 132 | 2020 | 4 | 639 |
+--------+------+-------+--------+
| 132 | 2020 | 5 | 411 |
+--------+------+-------+--------+
| 132 | 2020 | 6 | 302 |
+--------+------+-------+--------+
| 132 | 2020 | 7 | 929 |
+--------+------+-------+--------+
| 132 | 2020 | 8 | 884 |
+--------+------+-------+--------+
| 132 | 2020 | 9 | 644 |
+--------+------+-------+--------+
| 132 | 2020 | 10 | 640 |
+--------+------+-------+--------+
| 132 | 2020 | 11 | 121 |
+--------+------+-------+--------+
| 132 | 2020 | 12 | 980 |
+--------+------+-------+--------+
| 1447 | 2020 | 11 | 356 |
+--------+------+-------+--------+
| 1447 | 2020 | 12 | 351 |
+--------+------+-------+--------+
样本输出(这里的年周期列只是为了表明自用户加入以来总数属于哪一年)。>
+--------+------------+----------------------+
| userID | Year Cycle | Current Total Amount |
+--------+------------+----------------------+
| 132 | 1 | 8751 |
+--------+------------+----------------------+
| 132 | 2 | 2385 |
+--------+------------+----------------------+
| 1447 | 1 | 707 |
+--------+------------+----------------------+
【问题讨论】:
-
请添加tag of your DBMS。并且不要使用数据图像,将其粘贴为纯文本。
-
按年、月从表组中选择总和(值)、年、月
-
@astentx 谢谢。我已按照您的建议进行了修改。
-
@WalterVehoeven 我认为这不会给我想要的结果。我想要一行表示前 12 个月的总和(值),然后另一行表示接下来 12 个月的总和,基于每个用户的数据开始的月份。
-
您需要向我们展示您的预期结果和尝试。
标签: sql sql-server