Oracle 8g - 如何创建一个没有枢轴的动态 table?
Oracle 8g - How can i create a dynamic table without pivot?
我需要在 Oracle 8g 中创建一个动态 table,但是这个版本没有 PIVOT
属性。我想创建一个这样的 table。
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 |
代码数量未定义。这就是我无法创建静态 table 的原因。
使用 "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 )
)
我需要在 Oracle 8g 中创建一个动态 table,但是这个版本没有 PIVOT
属性。我想创建一个这样的 table。
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 |
代码数量未定义。这就是我无法创建静态 table 的原因。
使用 "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 )
)