我有一张表
选择*来自where id = 1;返回
person_id colA colB
1 AA BB
1 CC DD
1 EE FF
现在我需要的是
person_id colA colB colA_row_2, colB_Row_2 ColA_row_3 ColB_ROW_3
1 AA BB CC DD EE FF
我每人总会得到九排。所以我可以创建非动态的列,但似乎无法做到这一点。这需要在纯sql中没有存储过程。提前致谢
答案 0 :(得分:2)
您需要PIVOT查询 请参阅示例http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html和http://www.oracle-base.com/articles/11g/pivot-and-unpivot-operators-11gr1.php
您必须定义如何将行转换为列 例如
pivot
(
count(colA )
for colA in ('AA' as "AA",'CC' "CC"...)
)
答案 1 :(得分:1)
您可以使用解码作为替代方案。
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4471013000346257238
答案 2 :(得分:0)
我最终使用
选择 MAX(解码(ROWNUM,1,AA,NULL))AA,.... MAX(DECODE(ROWNUM,1,FF,NULL))COLB_ROW_3 FROM(SELECT .....);