【发布时间】:2020-05-29 10:22:05
【问题描述】:
我正在尝试执行枢轴操作。枢轴工作正常。如果我想动态传递查询而不是硬编码值。根据使用的 Pivot XML 中的文档,但它提供了错误。任何建议都会有所帮助,
Pivot 正常工作:
select * from
(select column_name from cols where table_name = 'EMPLOYEES') aa
pivot
(
max(aa.column_name)
for column_name in ('EMPLOYEE_ID', 'FIRST_NAME')
);
Pivot XML 抛出错误:
select * from
(select column_name, table_name from cols where table_name = 'EMPLOYEES')
pivot xml
(
max(column_name)
for column_name in (select column_name from cols where table_name = 'EMPLOYEES')
);
ORA-00918: column ambiguously defined
00918. 00000 - "column ambiguously defined"
*Cause:
*Action:
尝试提供别名,但仍然没有帮助。
我们有没有其他方法可以在 IN 子句中定义子查询
【问题讨论】:
-
对所有列进行限定是一种很好的编程方式,至少在涉及多个表时是这样。 IE。做
cols.column_name而不仅仅是column_name。 -
试过了,还是不行
-
@JimMacaulay 。 . .为此,您需要使用动态 SQL —— 即在 PL/SQL 语句中使用
execute immediate。 -
@GordonLinoff,感谢您的建议,按照您的建议尝试了 PL/SQL 语句并且它有效。以下是答案,可能有人对此有所帮助