回答

收藏

带有子查询的Oracle PIVOT子句的示例

技术问答 技术问答 373 人阅读 | 0 人回复 | 2023-09-14

Oracle对PIVOT子句的定义指定可以在IN子句中定义子查询。我能想象的一个虚构的例子是
% L( z/ u6 e1 t# J; e... PIVOT (AVG(salary) FOR (company) IN (SELECT DISTINCT company FROM companies))6 j) X% j9 e7 |3 e
但是,与此同时,我得到了一个ORA-00936: Missing
2 i9 @' w* A, p+ w" y3 H& X7 Zexpression错误。不幸的是,来自这个新PIVOT子句的错误通常相当隐蔽。谁能给我一个很好的示例,说明如何在IN子句的PIVOT子句中使用子查询?% F9 v1 ~2 f( S3 b1 i
               
5 e) c# ~9 I0 X0 P解决方案:8 G. P- _) Z+ e# l, O4 I
                & c# q0 O% Y2 f1 _5 G9 A# N" g! ]

. `; \" [! m( P& m% l
, \/ @4 N" w1 g$ @; R/ e5 h& J8 W                显然,我懒得阅读文档的结尾…再往下看,文档指出:2 ^- {5 c5 x  P& f/ m: |/ Q$ R
: ~- e) V5 i% x( p% k, x" T8 p
子查询子查询仅与XML关键字一起使用。指定子查询时,该子查询找到的所有值都将用于透视。[…]
% K3 j" ^4 w( z1 h' K% U% t  a9 ]9 ^! _) \4 |
这会工作
3 U4 G" F! S' h0 |# wPIVOT XML (AVG(salary) FOR (company) IN (SELECT DISTINCT company FROM companies))
4 m+ [) y; q2 Z) f) Z! z* A7 J查看完整的文档
" g$ k4 u' W+ j  T3 Chttp://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#CHDFAFIE
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则