次の課題に直面しています。同じ列でテーブル データを 2 回ローテーションする必要があります。これがデータのスクリーンショットです。
毎年の購入額と販売額の両方を含むアイテム ID ごとに 1 つの行が必要です。「年」列を 2 回選択し、各販売年が「S」で始まり、各購入年が「P」で始まるように少しフォーマットし、2 つのピボットを使用して 2 年の列を回転させることで、これを行ってみました。 . SQL クエリは次のとおりです (SQL Server 2008 で使用)。
SELECT [Item ID],
[P2000],[P2001],[P2002],[P2003],
[S2000],[S2001],[S2002],[S2003]
FROM
(
SELECT [Item ID]
,'P' + [Year] AS YearOfPurchase
,'S' + [Year] AS YearOfSelling
,[Purchasing value]
,[Selling value]
FROM [ItemPrices]
) AS ALIAS
PIVOT
(
MIN ([Purchasing value]) FOR [YearOfPurchase] in ([P2000],[P2001],[P2002],[P2003])
)
AS pvt
PIVOT
(
MIN ([Selling value]) FOR [YearOfSelling] in ([S2000],[S2001],[S2002],[S2003])
)
AS pvt2
結果は、まさに私が望んでいたものではありません (下の画像を参照)。
ご覧のとおり、各アイテム ID にはまだ複数の行があります。行数をアイテムごとに正確に 1 つに減らす方法はありますか? 下の Excel のスクリーンショットのように見えますか?