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

示例数据库表:

**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 服务器中成功地将行转换为列?
谢谢!

最佳答案

从数据透视源查询中删除 ID 并添加 Person201Value 数据透视聚合
而不是 ID

SELECT CurrentIdNo,
       FirstName,
       LastName
FROM   (SELECT PersonId,
               Person201Code,
               Person201Value
        FROM   HRPerson201) src
       PIVOT ( Max (Person201Value)
             FOR Person201Code IN (CurrentIdNo,
                                   Firstname,
                                   LastName)) pvt;
  • SQLFIDDLE DEMO
  • 关于sql-server - 在 MS SQL 中将行转换为列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35451934/

    10-10 16:48