SQL Pivot STRING列到STRING行

时间:2015-09-04 14:20:40

标签: sql string pivot

我总是忙着使用SQL Pivot Table 我需要做的就是更改列数据:

Name       Thing
---------- -----------------
JOE        Glove
JOE        Pants
JOE        Hat
SUE        Hat
SUE        Shirt
MIKE       Shoes

要分组,分隔的列:

Name      Things
--------- -------------------------------------
JOE       Glove | Pants | Hat
SUE       Hat | Shirt
MIKE      Shoes

或者更好的是,每个找到的项目都有一个“参差不齐”的列:

Name      Thing0 Thing1 Thing2 Thing3
--------- ------ ------ ------ ------
JOE       Glove  Pants  Hat
SUE       Hat    Shirt
MIKE      Shoes

感谢您的帮助。

-Allen

1 个答案:

答案 0 :(得分:0)

对于分隔/聚合列:

SELECT Name, listagg(Things, ' | ') WITHIN GROUP (ORDER BY Things)
FROM your_table
GROUP BY Name;

你的第二个"衣衫褴褛的权利"如果你想为每个Thing提供单独的列,那么使用PIVOT函数使用动态sql语句使用PL / SQL可能最好地解决了这个问题。