SQL Pivot行到列?

时间:2015-09-09 08:21:05

标签: sql tsql sql-server-2012 pivot

我的表格看起来像这样

enter image description here

我想将行旋转到表头。

如果我使用:

(?!^)\G

enter image description here

这是几乎我想要的

但有没有办法在枢轴中不使用MAX?当我使用MAX ??时,我正在为DOMAIN \ USER1丢失DIVSION 010和COMPANY 1。

任何人都可以帮助我吗?

**** UPDATE *************

我错过了一个我需要的专栏,因为我最终会有更多行(正如你们其中一个人所说的那样)。

enter image description here

1 个答案:

答案 0 :(得分:1)

问题是枢轴需要某种方式来连接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作为同一行上的列