0
ピボット関数の新機能で、既存のデータを使用して新しい列を作成しようとしています。この場合、列は現在の月と1年間の各月のデータに基づいている必要があります。フィールドMonths
には、YYYYMM形式の月が含まれています。SQL - ピボット関数の現在および将来の月のデータを表示
私は次のクエリを使用しています:
SELECT *
FROM (
SELECT
[Num]
,[Channel]
,[Months]
,[Currency]
,[Value]
FROM [Test].[dbo].[Decision_Details]
WHERE
(Key_Name = 'Decision'
OR Key_Name = 'LastCycle')
) as s
PIVOT
(
SUM([Value])
FOR [Months] IN ([201705], [201706], [201708], [201709], [201710], [201711], [201712])
)AS pvt
そして、次のような出力を受け取ります。
をこれは正しい出力であるが、私はからのデータに基づいてする列を必要とします現在の月(201705)以降は、ハードコードされていません。
私はピボットクエリにLEFT(CONVERT(varchar, GetDate(),112),6)
を追加しようとしましたが、私が望むように動作していないようです。
これを私のクエリに組み込む方法の提案はありますか?
更新:動的ピボットを使用して、毎月得ることができた
:
SQLクエリは、固定された列名を返します。フレキシブルな名前が必要な場合は、動的SQLを使用する必要があります。 Google検索:「SQL Serverの動的ピボット」を試してみてください。 –
ありがとう、私はこれを調べます! – krynil