【发布时间】:2013-12-27 09:56:08
【问题描述】:
我有一个大型 sql 查询,它连接来自多个表的列以提供这种格式的数据:
ID CODE Count Action
-----------------------------
1 A 02 VIEWED
1 A 22 CLICKED
1 A 45 PRINTED
1 A 32 SCHEDULED
2 A 34 VIEWED
2 B 14 CLICKED
2 B 23 PRINTED
2 B 78 SCHEDULED
.
.
X D 12 CLICKED
action 的值只能是 VIEWED、CLICKED、SCHEDULED、PRINTED。 ID、CODE 的每个组合最多有 4 行。如果没有动作计数说“CLICKED”,则该行不存在
所以,一旦我有了结果集,我想将它展平以拥有这种格式的数据:
Id CODE VIEWED CLICKED PRINTED SCHEDULED
-----------------------------------------------
1 A 02 11 45 32
1 B 54 57 89 45
2 B 34 14 23 78
3 G null null 28 20
X D null 12 null null
我的查询做了很多事情,但简而言之:
SELECT ID,CODE, ACTION, COUNT(*) AS COUNT
FROM MY_TABLE
GROUP BY ID,CODE,ACTION.
在这个查询中,我想获取结果集,然后展平行。我不能使用 union-alls 等多次查询数据库。
数据库是Oracle 9i数据库,所以pivot功能不起作用。
【问题讨论】:
标签: sql oracle pivot oracle9i flatten