表结构
YNSX VARCHAR2(20) Y
NYID NUMBER Y
XHZ NUMBER Y
数据
| YNSX | NYID | XHZ |
1 | 1 | 1001 | 20 |
2 | 2 | 1001 | 30 |
3 | 3 | 1001 | 40 |
4 | 1 | 1002 | 1 |
5 | 2 | 1002 | 2 |
6 | 3 | 1002 | 3 |
7 | 1 | 1003 | 5 |
问题: 相同的NYID 整理成一条数据,YNSX成为列名称 相应的XHZ的值变成他的值
SQL文:
select t.nyid,sum(decode(t.ynsx,'1',t.xhz,0)) as "nysx1",
sum(decode(t.ynsx,'2',t.xhz,0)) as "nysx2",
sum(decode(t.ynsx,'3',t.xhz,0)) as "nysx3"
from t_test t
group by t.nyid
查询结果:
| NYID | nysx1 | nysx2 | nysx3 |
1 | 1001 | 20 | 30 | 40 |
2 | 1002 | 1 | 2 | 3 |
3 | 1003 | 5 | 0 | 0 |
注意: 单引号的地方不能用双引号