【发布时间】:2018-08-29 19:26:34
【问题描述】:
我有一个包含每月消费金额的 sql 表。我想通过 cust_no 将列转换为行,并仅显示过去 12 个月的消费情况。有很多年消费数据的客户。我希望数据在新的消费读数出现时刷新,随着时间的推移,最新的读数,然后是之前的读数,依此类推。最好的方法是什么?
cust_no cons read_dt
1 1 2/28/2017 0:00
1 2 3/31/2017 0:00
1 2 5/1/2017 0:00
1 2 6/1/2017 0:00
1 2 6/30/2017 0:00
1 2 7/31/2017 0:00
1 2 8/29/2017 0:00
1 3 9/29/2017 0:00
1 2 10/31/2017 0:00
1 2 12/1/2017 0:00
1 2 1/2/2018 0:00
1 3 2/1/2018 0:00
1 2 3/2/2018 0:00
2 1 12/21/2016 0:00
2 0 1/20/2017 0:00
2 0 2/21/2017 0:00
2 1 3/24/2017 0:00
2 1 4/24/2017 0:00
2 2 5/25/2017 0:00
2 2 6/26/2017 0:00
2 1 7/25/2017 0:00
2 1 8/24/2017 0:00
2 2 9/25/2017 0:00
2 2 10/26/2017 0:00
2 2 11/27/2017 0:00
2 1 12/26/2017 0:00
2 2 1/26/2018 0:00
2 2 2/26/2018 0:00
【问题讨论】:
-
PIVOT with MONTH()的可能重复
-
@dfundako,你不可能投反对票,因为到目前为止只有一个 DV,而且我知道它是我的。
-
各位,SQL初学者不一定清楚这个操作叫做pivot。
-
如果您要将列转换为行,则查找 UNPIVOT
-
您的最佳指标是什么?你的工作最少?表达 TSQL 时字符最少?最小的内存占用?并行执行最有效?
标签: sql sql-server tsql pivot