我有一个每月消费金额的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
答案 0 :(得分:3)
试试这个:
select * from (select * from #temp
where read_dt between dateadd(yy,-1, read_dt )and getdate() )a
pivot (max (read_dt) for
cons in ([1],[2],[3]))b