目前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的值

解决方案 »

  1.   

    说错了,应该是“course和1 2 3 4交叉的地方,是对其项目的count的值”
      

  2.   

    你如果列固定了可以用case或者decode 来实现TABLE B
    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来实现
      

  3.   

    或用case when --table1
    --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
      

  4.   

    2楼、3楼正解,decode和case都可以