目前SQL得到的结果形式是Course_A 1 a
Course_A 2 b
Course_A 3 c
Course_A 3 d
Course_A 4 e
Course_B 1 f
Course_B 2 g
Course_B 4 h
希望统计得到下面形式的结果集 1 2 3 4
Course_A 1 1 2 1
Course_B 1 1 0 1表格内的是Course和a b c d交叉的地方是count的值
Course_A 2 b
Course_A 3 c
Course_A 3 d
Course_A 4 e
Course_B 1 f
Course_B 2 g
Course_B 4 h
希望统计得到下面形式的结果集 1 2 3 4
Course_A 1 1 2 1
Course_B 1 1 0 1表格内的是Course和a b c d交叉的地方是count的值
A1 A2 A3
Course_A 1 a
Course_A 2 b
Course_A 3 c
Course_A 3 d
Course_A 4 e
Course_B 1 f
Course_B 2 g
Course_B 4 hSELECT A1,sum(decode(A2,1,1,0)) 1,
sum(decode(A2,2,1,0)) 2,
sum(decode(A2,3,1,0)) 3,
sum(decode(A2,4,1,0)) 4
from B group by A1
上面是decode实现的方法,并且前提是你的列固定。如果不固定只能用动态sql来实现
--Course ClassSELECT Course,
sum(CASE WHEN Class=1 THEN 1 ELSE 0 END) AS "1",
sum(CASE WHEN Class=2 THEN 1 ELSE 0 END) AS "2",
sum(CASE WHEN Class=3 THEN 1 ELSE 0 END) AS "3",
sum(CASE WHEN Class=4 THEN 1 ELSE 0 END) AS "4"
FROM table1
GROUP BY Course