小编Rob*_*len的帖子

是否可以使用SQL Server使用相同的枢轴列具有多个枢轴

我正面临着以下挑战.我需要在同一列上旋转两次表数据.这是数据的屏幕截图.

每件商品的购买和销售价值列表

我希望每个商品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
Run Code Online (Sandbox Code Playgroud)

结果并不完全是我所希望的(见下图):

实际情况:行太多

如您所见,每个商品ID仍有多行.有没有办法将每行的行数减少到一个?所以它看起来有点像下面的Excel截图?

所需情况:每个商品ID一行

sql sql-server pivot unpivot

14
推荐指数
3
解决办法
5万
查看次数

标签 统计

pivot ×1

sql ×1

sql-server ×1

unpivot ×1