[英]Oracle SQL PIVOT “Column ambigously defined”
我正在嘗試按 MEASURE TYPE 列 PIVOT DOMAIN、PANEL SECTION 和 CATEGORY。
請檢查圖像。 桌子
這是我正在運行的代碼:
SELECT ID,
PERIOD,
AMOUNT,
"HOURS",
"NUMBER",
VALUE
FROM
(select a.ID,
a.period,
b.domain,
b.panel,
b.section,
b.category,
b.MEASURE_TYPE,
a.value
from TABLE_a a
inner join TALBE_B b
on a.ID = b.ID
)
PIVOT(
MAX("DOMAIN"),MAX("PANEL"),MAX("SECTION"),MAX("CATEGORY")
FOR MEASURE_TYPE IN ('Amount' AS "AMOUNT", 'Hours' AS "HOURS", 'Number' AS "NUMBER"))
它給了我這個錯誤:
ORA-00918: column ambiguously defined 00918. 00000 - "column ambiguously defined" *Cause: *Action: Error at Line: 4 Column: 9
我只是發現條件聚合更容易工作和更靈活。 我想你想要:
select b.DOMAIN, b.PANEL, b.SECTION, b.CATEGORY,
max(case when measure_type = 'Number' then value end) as number,
max(case when measure_type = 'Hours' then value end) as hours,
max(case when measure_type = 'Amount' then value end) as amount
from TABLE_a a join
TALBE_B b
on a.ID = b.ID
group by DOMAIN, PANEL, SECTION, CATEGORY
您應該在pivot
查詢中使用select *
,一切都將由 oracle 完成,如下所示:
SELECT *
FROM
(select a.ID,
a.period,
b.domain,
b.panel,
b.section,
b.category,
b.MEASURE_TYPE,
a.value
from TABLE_a a
inner join TALBE_B b
on a.ID = b.ID )
PIVOT(
MAX("DOMAIN"),MAX("PANEL"),MAX("SECTION"),MAX("CATEGORY")
FOR MEASURE_TYPE IN ('Amount' AS "AMOUNT", 'Hours' AS "HOURS", 'Number' AS "NUMBER"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.