Oracle 8g-如何在没有pivot的情况下创建动态表?

Oracle 8g-如何在没有pivot的情况下创建动态表?,oracle,pivot,Oracle,Pivot,我需要在Oracle8g中创建一个动态表,但是这个版本没有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 |

我需要在Oracle8g中创建一个动态表,但是这个版本没有
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  |
代码的数量未定义。这就是我无法创建静态表的原因

使用“普通”透视查询:

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 )
)

请指定版本号。最好是真实版本号。。。。如果代码的数量未知,那么无论如何都要与pivot进行斗争。那么您想要一个列数未知的表(或只是结果集)?如何消费?这可能是报告层为您做的事情。我只是好奇,如何才能运行一个20年前的Oracle数据库版本?Oracle版本是8i(!),已经有20年了。PIVOT是在oracle11中引入的。我不确定,甚至可能是
案例。。。当
在8i上不可用时。@Wernfried Domscheit CASE表达式比Oracle 8i(ANSII SQL 1992-至少有25年历史)旧得多,并且8i支持它们,请查看文档:看起来CASE是在8i中引入的(至少我在7i中没有找到),所以我认为没有错。