我有一个要求来转动数据。我使用pivot尝试了下面的查询:
select * from
(
select g.geography_code,
g.description,
a.external_id_1 as ext
from geography_alignment_timeline gal
join geography g on g.geography_id=gal.geography_id
join alignment a on gal.alignment_id=a.alignment_id
join team t on a.team_id=t.team_id
where g.tenant_id=500104
and g.region_id=7888500001071037
and t.team_id=70000012130101
)
pivot
(
max(ext) for ext in (select external_id_1 from alignment where tenant_id=500104)
);
我收到了错误:
ORA-00936: missing expression
Tables and columns:
Geography : Geography_id,Geography_code,Description,External_id_1
Geography_alignment_timeline : Geography_id,Alignment_id,External_id_1
Alignment : Alignment_id,team_id,Alignment_name,External_id_1
team : Team_id,name,Description,External_id_1
我想显示如下数据..
每个团队都有separte alignment_ids。我想显示上面的数据。
你能帮我解决一下这个问题吗?
答案 0 :(得分:1)
你无法动态转动;需要在分析时知道值的数量(对应于最终结果集中的列数)。在pivot的IN
子句中使用子查询是无效的语法。您需要对要查看的值进行硬编码。
可以使用动态XML数据透视图,但这可能不会对您有所帮助;你need to unpack the XML somehow。您也可能to use dynamic SQL to generate the query但是参考游标结果可能不适合您。
答案 1 :(得分:0)