求一个sql,在线等,成功就给分
表结构:table
resid value name //列名
c: 3 aa
c: 4 bb
d: 5 aa
d: 6 bb
现在想要的效果是:
resid aa bb //列名
c: 3 4
d: 5 6
大致的效果是把name里的值当成 展现的列, 把value里的值当成 值。
求高手帮忙写个,先谢谢了。
------解决方案--------------------SELECT RESID,
MAX(DECODE(NAME, 'aa', VALUE, NULL)) AA,
MAX(DECODE(NAME, 'bb', VALUE, NULL) BB
FROM TABLE1
GROUP BY RESID
思路如上SQL,name如果确定,就是可以用SQL,否则就要过程拼接SQL
------解决方案--------------------
又是行转列... 2楼是正确答案
1、使用Decode然后使用聚合函数
2、使用Case When 然后使用聚合函数
3、使用PL/SQL 拼SQL进行动态转换
4、使用11G的新特性PIVOT