表结构如下:
id0 userid subjectid name subject score
001 1001 01 张三 语文 85
002 1001 02 张三 数学 93
003 1001 03 张三 英语 60
004 1002 01 李四 语文 75
005 1002 02 李四 数学 92
006 1002 03 李四 英语 87要求得到如下结果:
userid name 语文 数学 英语 合计
1001 张三 85 93 60 248
1002 李四 75 92 87 254
id0 userid subjectid name subject score
001 1001 01 张三 语文 85
002 1001 02 张三 数学 93
003 1001 03 张三 英语 60
004 1002 01 李四 语文 75
005 1002 02 李四 数学 92
006 1002 03 李四 英语 87要求得到如下结果:
userid name 语文 数学 英语 合计
1001 张三 85 93 60 248
1002 李四 75 92 87 254
比如说有数据
Name class score
小明 语文 80
小强 数学 90
小明 英语 89
小强 语文 70
小明 数学 95
小强 英语 85要求出来
姓名 语文 数学 英语
小明 80 95 89
小强 70 90 85这时候就以用decode来做
SELECT NAME 姓名, SUM (DECODE (CLASS, '语文', score, 0)) 语文,
SUM (DECODE (CLASS, '数学', score, 0)) 数学,
SUM (DECODE (CLASS, '英语', score, 0)) 英语
FROM table
GROUP BY NAME
SELECT userid,NAME, SUM (DECODE (subject, '语文', score, 0)) 语文,
SUM (DECODE (subject, '数学', score, 0)) 数学,
SUM (DECODE (subject, '英语', score, 0)) 英语,
SUM (DECODE (subject, '语文', score, 0))+ SUM (DECODE (subject, '数学', score, 0))
+SUM (DECODE (subject, '英语', score, 0))
FROM table
GROUP BY userid,NAME
t.name,
sum(decode(subject,'语文',t.score,0))语文,
sum(decode(subject,'数学',t.score,0))数学,
sum(decode(subject,'英语',t.score,0))英语,
sum(t.score)合计
from test1 t group by t.userid,t.name