1
我一直在创建一个将字符串转换为表格的支点,幸运的是它。但它只包含一行(表中的第一条记录)。PIVOT只返回一行
下面的代码:
SELECT
COL1,COL2,COL3.... etc.
FROM
(
SELECT
LEFT(CA.val,CHARINDEX('=',CA.val)-1) ColumnName,
SUBSTRING(CA.val,CHARINDEX('=',CA.val)+1,100) Value
FROM (MYTABLE)
CROSS APPLY (MYFUNCTION)(MYTABLECOLUMNNAME,'|') CA
) PD
PIVOT
(
MAX(Value)
FOR ColumnName IN (COL1,COL2,COL3.... etc.)
) AS PT
的输出只有SELECT
声明(没有将它放到PIVOT
):
ColumnName Value
------------------------
Name Value1
Age Value2
Name DiffValue
Age DiffValue2
输出表的PIVOT
Name AGE
Value1 Value2
所以基本上数据透视表只打印冷杉t记录并绕过另一行。是否因为它具有相同的列名?
我所要的输出是这样的:
Name AGE
------------------------
Value1 Value2
DiffValue DiffValue2
所以真的没有办法把在枢轴的所有行,而无需钥匙? ID?或者?这就是我一直在考虑的一些ID,但我认为有没有ID或其他方式的方式。无论如何,谢谢你的答案。 – Kuroi
我相信你需要一个'UNPIVOT'-ed列,在这种情况下'Rn'可以达到你想要的结果。再一次,我对“PIVOT”不是很熟悉。但是在条件聚合的情况下,你肯定需要这个唯一的ID。 –