我有这个表视图
UserName Product NumberPurchaces -------- ------- --------------- 'John Doe' 'Chair' 4 'John Doe' 'Table' 1 'Jane Doe' 'Table' 2 'Jane Doe' 'Bed' 1
如何创建将在Oracle 10g中提供此透视图视图的查询?
UserName Chair Table Bed -------- ----- ----- --- John Doe 4 1 0 Jane Doe 0 2 1
有没有办法动态地做到这一点?我看到了很多方法(解码,PL / SQL循环,联合,11g数据透视)
但根据上述示例,我尚未找到适合我的方法
编辑 :我不知道在开发时间产品的数量或类型,所以这必须是动态的
Oracle 11g是第一个支持PIVOT / UNPIVOT的,因此您必须使用:
SELECT t.username, MAX(CASE WHEN t.product = 'Chair' THEN t.numberpurchases ELSE NULL END) AS chair, MAX(CASE WHEN t.product = 'Table' THEN t.numberpurchases ELSE NULL END) AS tbl, MAX(CASE WHEN t.product = 'Bed' THEN t.numberpurchases ELSE NULL END) AS bed FROM TABLE t GROUP BY t.username
您可以使用DECODE,但是从9i开始就支持CASE。