Sql server 在MS SQL中将行转换为列

Sql server 在MS SQL中将行转换为列,sql-server,Sql Server,我正在寻找一种在MS SQL server中将行转换为列的有效方法 示例数据库表: **ID PersonID Person201Code Person201Value** 1 1 CurrentIdNo 0556 2 1 FirstName Queency 3 1 LastName Sablan 查询结果应如下所示: **CurrentIdNo

我正在寻找一种在MS SQL server中将行转换为列的有效方法

示例数据库表:

**ID    PersonID    Person201Code   Person201Value**
  1     1           CurrentIdNo     0556
  2     1           FirstName       Queency
  3     1           LastName        Sablan
查询结果应如下所示:

**CurrentIdNo     FirstName         LastName**
  0556            Queency             Sablan
我尝试使用PIVOT,但它只在行值上返回null:

SELECT CurrentIdNo, FirstName, LastName
FROM

(
  SELECT ID, PersonId, Person201Code, Person201Value
  FROM HRPerson201
) src
PIVOT
(
  MAX (ID)
  FOR Person201Code in (CurrentIdNo, Firstname, LastName))
 pvt;
如何在MS SQL server中成功地将行转换为列?
谢谢

从pivot源查询中删除
ID
,并添加
Person201Value
pivot聚合 而不是
ID

SELECT CurrentIdNo,
       FirstName,
       LastName
FROM   (SELECT PersonId,
               Person201Code,
               Person201Value
        FROM   HRPerson201) src
       PIVOT ( Max (Person201Value)
             FOR Person201Code IN (CurrentIdNo,
                                   Firstname,
                                   LastName)) pvt; 
  SELECT *
FROM
  (SELECT personid,Person201Code,Person201Value
   FROM #pivot) Sales
  PIVOT(max(Person201Value)
   FOR Person201Code in (CurrentIdNo, Firstname, LastName))
  AS PivotSales;