SQL 将行转为列?

SQL Pivot row to column?

我的table看起来像这样

我想将行旋转成 table 个头。

如果我使用:

 SELECT [USER],[DIVISION], [COMPANY],[RIGHTS] FROM
  (SELECT [USER],[ATTRIBUTE],[VALUE],[RIGHTS] FROM [AGDA_MANUAL].[dbo].[TEST] WHERE [PROC] = 'FINANCE' ) AS  T1
  PIVOT (MAX([VALUE]) FOR [ATTRIBUTE] IN ([DIVISION],[COMPANY])) AS T2

这就是几乎我想要的

但是有没有办法在枢轴中不使用 MAX?当我使用 MAX 时,我失去了 DIVSION 010 和 COMPANY 1 for DOMAIN\USER1 ??.

有人可以帮我吗?

****更新*************

我缺少一列我需要的,因为我最终会得到更多行(正如你们其中一位所说)。

问题是 pivot 需要某种方式来连接 DIVISION 和 COMPANY 数据。 MAX 允许它这样做——否则它怎么知道哪个公司与哪个 DIVISION 相关联。 一种解决方案是添加一个人工列(通过 RowNumber() 生成),您将添加到分组中(连同 PROC 和 USER) 您仍然需要决定 DIV 023 属于 COMP 1,2 还是 3

你可能会得到类似

的结果
FINANCE | DOMAIN\USER1 | 1 | DIVISION | 023
FINANCE | DOMAIN\USER1 | 2 | DIVISION | 010
FINANCE | DOMAIN\USER1 | 1 | COMPANY  | 1
FINANCE | DOMAIN\USER1 | 2 | COMPANY  | 2
FINANCE | DOMAIN\USER2 | 1 | COMPANY  | 3

现在您可以旋转并将公司和 DIVISION 作为同一行的列