【发布时间】:2013-02-22 20:02:43
【问题描述】:
我正面临以下挑战。我需要在同一列上旋转表数据两次。 这是数据的截图。
我想为每个项目 ID 设置一行,其中包含每年的购买价值和销售价值。 我尝试通过选择“年份”列两次,对其进行格式化,以便每个销售年份以“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 仍然不止一行。有没有办法将行数减少到每个项目正好一个?这样看起来有点像下面的 Excel 截图?
【问题讨论】:
-
正是我需要的问题——我自己会问类似的问题!
标签: sql sql-server pivot unpivot