回答

收藏

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

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

Oracle对PIVOT子句的定义指定可以在IN子句中定义子查询。我能想象的一个虚构的例子是/ ?. y; o# R4 Q7 I4 p' Q0 k
... PIVOT (AVG(salary) FOR (company) IN (SELECT DISTINCT company FROM companies))
% K* y+ u$ ~$ ?5 w+ |但是,与此同时,我得到了一个ORA-00936: Missing
1 e* D5 r, {- r& `expression错误。不幸的是,来自这个新PIVOT子句的错误通常相当隐蔽。谁能给我一个很好的示例,说明如何在IN子句的PIVOT子句中使用子查询?; V! C: U: s4 b# f+ L
                ; M7 K* A( Y! d( P- X. P" R4 C
解决方案:7 z& C' r. I  \7 d3 K
                # U4 T( L7 Z0 v: Z$ s

# W& Q: x4 G% i# `7 Q
" o3 J6 o. ]# N5 ~( w% ?  f                显然,我懒得阅读文档的结尾…再往下看,文档指出:
+ H  Y! ~# ?' p2 p$ q2 P. y( A+ I! a; T0 y0 z" O! S' w
子查询子查询仅与XML关键字一起使用。指定子查询时,该子查询找到的所有值都将用于透视。[…]2 ~7 ]$ T- W8 Q6 V/ C/ r

0 e9 z8 c5 T0 A, c2 {8 U1 T. c这会工作
$ z. J0 F: g# n. PPIVOT XML (AVG(salary) FOR (company) IN (SELECT DISTINCT company FROM companies))( D9 b$ G, L- u" ]4 \  \: }
查看完整的文档% I% U! |' m6 o* u) }  y& q
http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#CHDFAFIE
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则