私はテーブルに次のデータを持っています。
州 P_Name 製品 Apr-2013 May-2013 May-2013 Jun-2013 July-2013 Aug-2013 Sep-2013 Oct-2013 Nov-2013 Dec-2013 Jan-2014 Feb-2014 Mar-2014 ================================================== ================================================== ================================================== ========= s1 p1 pro1 1500 4587 5245 6541 9683 45878 65464 4444 4411 21452 223322 232322 s1 p1 pro2 1500 4587 5245 6541 9683 45878 65464 4444 4411 21452 223322 232322
最初の 3 つの列は静的ですが、値は動的で、残りの column_names と値は動的です。これには変数があります
Declare @MONTHS INT
SET @MONTHS = 1--3/6/12 can be 1/3/6/12 as monthly/quater/half-year/fullyear
ここで、i の値に応じて、@MONTHS
1 番目/1 番目から 3 番目/1 番目から 6 番目/1 番目から 12 番目の列に値を追加し、その列のみを表示する必要があります。もしも
SET @MONTHS = 1
上記のデータは結果です。しかし
SET @MONTHS = 3
次に、望ましい結果は次のとおりです。
州 P_Name 製品 Jun-2013 Sep-2013 Sep-2013 Dec-2014 Mar-2014 ================================================== ===================== s1 p1 pro1 11332 62102 74319 477096 s1 p1 pro2 11332 62102 74319 477096
ここでは、2013 年 4 月、2013 年 5 月、2013 年 6 月の列の値 (2013 年 6 月の列) が追加された 3 番目の月の列のみが表示されます。月の列数と行数は動的です。月の列の数は、1/3/6/12 の倍数にすることができます。これには助けが必要です。ありがとう。
編集: 上記のテーブル データは、PIVOT を使用して別のテーブルから派生します。ループなしでPIVOTの前/と一緒に可能ですか..? 以下はPIVOT前のデータです。
州 p_name 商品金額 monthnames ================================================ s1 p1 pro1 1500 2013 年 4 月 s1 p1 pro1 4587 2013 年 5 月 s1 p1 pro1 5245 2013 年 6 月 等々................ ...................................