行到列

时间:2010-11-03 18:27:08

标签: sql oracle oracle10g pivot

我有一张像

这样的表格
cases    open/close    count 
-----------------------------
A        open          10       
A        close         15
B        open          6
B        close         4

我需要得到一个类似

的结果表
cases   total     open     close  
---------------------------------
A       25        10       15
B       10        6        4

有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:4)

这通常被称为数据透视查询,将行转换为列数据。使用:

  SELECT t.cases,
         SUM(t.count) AS total,
         SUM(CASE WHEN t.open_close = 'open' THEN t.count ELSE 0 END) AS open,
         SUM(CASE WHEN t.open_close = 'close' THEN t.count ELSE 0 END) AS close
    FROM YOUR_TABLE t
GROUP BY t.cases

Oracle直到11g才添加ANSI PIVOT(和UNPIVOT)语法。

答案 1 :(得分:0)

您可以在列案例上使用数据透视并聚合计数总和。