简单的Pivot样本

Ezi*_*Ezi 2 t-sql pivot-table sql-server-2008

我需要所有masterid的报告,但它可能只是一个连续...我知道这是一个简单的事情,但我无法正确找出语法.

我附加了数据如何存储在SQL服务器和输出我想要的方式.

数据:

数据

要求输出:

要求的输出

CREATE TABLE [dbo].[Services]
    ([ServiceID] [int] IDENTITY(1,1) NOT NULL,
    [MasterID] [nvarchar](10) NOT NULL,
    [Type] [nvarchar](50) NOT NULL,
    [Status] [nvarchar](50) NOT NULL)

Insert Into Services (MasterID, Type , Status) values (123, 'Basic Phone', 'Open')
Insert Into Services (MasterID, Type , Status) values (123, 'BlackBerry', 'Open')
Insert Into Services (MasterID, Type , Status) values (123, 'Pixi', 'Closed')
Run Code Online (Sandbox Code Playgroud)

Aar*_*and 5

SELECT MasterID, 
  [Basic Phone] = MAX([Basic Phone]),
  [Pixi] = MAX([Pixi]),
  [Blackberry] = MAX([Blackberry])
FROM
(
  SELECT MasterID, [Basic Phone],[Pixi],[Blackberry]
  FROM dbo.Services AS s
  PIVOT 
  (
    MAX([Status]) FOR [Type] IN ([Basic Phone],[Blackberry],[Pixi])
  ) AS p
) AS x
GROUP BY MasterID;
Run Code Online (Sandbox Code Playgroud)

或者更简单 - 并归功于@YS.指出我的冗余.

SELECT MasterID, 
  [Basic Phone],
  [Pixi],
  [Blackberry]
FROM
(
  SELECT MasterID, Status, Type FROM dbo.Services
)
AS s
PIVOT 
(
  MAX([Status]) FOR [Type] IN ([Basic Phone], [Blackberry], [Pixi])
) AS p;
Run Code Online (Sandbox Code Playgroud)

  • 谢谢亚伦.我问过,因为我的版本与你的版本有点不同 - 如果你或OP感兴趣的话,我有sql小提琴:http://sqlfiddle.com/#!3/cbf94/1 (2认同)