簡體   English   中英

Oracle SQL PIVOT “列定義不明確”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM