SQL列到最近12个月的数据行

时间:2018-03-20 20:18:01

标签: sql sql-server tsql pivot

我有一个每月消费金额的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

1 个答案:

答案 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