我要将下表
选项 答案 姓名
爱好 篮球 bruce
年龄 28 bruce
性别 男 bruce
城市 wh bruce
爱好 足球 jack
年龄 25 jack
性别 男 jack
城市 js jack
爱好 羽毛球 jim
年龄 22 jim
性别 男 jim
城市 sd jim
转换为
姓名 爱好 年龄 性别 城市
bruce 篮球 28 男 wh
jack 足球 25 男 js
jim 羽毛球22 男 sd
的sql语句怎么写?
sql 多行转多列 聚集不了
------解决方案--------------------
SELECT WM_CONCAT(CASE WHEN V_OPTION = '爱好' THEN T.V_CONTENT ELSE NULL END) COLUMN1,
WM_CONCAT(CASE WHEN V_OPTION = '年龄' THEN T.V_CONTENT ELSE NULL END) COLUMN2,
WM_CONCAT(CASE WHEN V_OPTION = '性别' THEN T.V_CONTENT ELSE NULL END) COLUMN3,
WM_CONCAT(CASE WHEN V_OPTION = '城市' THEN T.V_CONTENT ELSE NULL END) COLUMN4
FROM MY_TABLE T
GROUP BY T.V_NAME
------解决方案--------------------
select 姓名,
max(decode(选项,'爱好',答案)) 爱好,
max(decode(选项,'年龄',答案)) 年龄,
max(decode(选项,'性别',答案)) 性别,
max(decode(选项,'城市',答案)) 城市
from t group by 姓名;
------解决方案--------------------
with test as
(select '爱好' 选项, '篮球' 答案, 'bruce' 姓名
from dual
union all
select '年龄', '28', 'bruce'
from dual
union all
select '性别', '男', 'bruce'
from dual
union all
select '城市', 'wh', 'bruce'
from dual
union all
select '爱好', '足球', 'jack'
from dual
union all
select '年龄', '25', 'jack'
from dual
union all
select '性别', '男', 'jack'
from dual
union all