Oracle 8g - 如何创建没有数据透视的动态表?

时间:2017-04-18 16:49:18

标签: oracle pivot

我需要在Oracle 8g中创建一个动态表,但是这个版本没有PIVOT属性。我想创建一个这样的表。

Date         | Code | count 
12/04/2016   |  a1  |  8
12/05/2016   |  a2  |  10
10/06/2016   |  a3  |  4
24/10/2016   |  a2  |  6

Date         | a1  |  a2 | a3
12/04/2016   |  8  |     |
12/05/2016   |     |  10 |
10/06/2016   |     |     |  4
24/10/2016   |     |  6  |

代码数量未定义。这就是我无法创建静态表的原因。

1 个答案:

答案 0 :(得分:0)

使用" plain"数据透视查询:

SELECT Date,
       max( CASE code WHEN 'a1' THEN count END ) As a1,
       max( CASE code WHEN 'a2' THEN count END ) As a2,
       max( CASE code WHEN 'a3' THEN count END ) As a3
FROM table
GROUP BY Date

PIVOT子句只是一种语法糖,可以更容易地表达上述查询 以下使用PIVOT子句的查询与上面的查询相同。

SELECT * 
FROM (SELECT date, code, count FROM table )
PIVOT (
  max(  count ) FOR code IN ( 'a1' as a1, 'a2' as a2, 'a3' as a3 )
)