簡體   English   中英

Unpivot:列定義不明確

[英]Unpivot : Column ambiguously defined

當運行下面的語句時,我得到“列模糊定義”。

請幫助我。

SELECT *
FROM
    (


  SELECT  activity_type,
      COUNT(decode(CASE WHEN activity_type = 'K' then 1 when activity_type='BH' then 1 END,1,1))  Holiday,
  COUNT(decode(CASE WHEN activity_type = 'SL' then 1 when activity_type='2' then 1 END,1,1)) Leave,
  COUNT(CASE WHEN activity_type = 'AL'  then 1 ELSE NULL END) Annual,
  COUNT(CASE WHEN activity_type = 'OL'  then 1 ELSE NULL END) Other_no,
  COUNT(CASE WHEN activity_type = 'IM'  then 1 ELSE NULL END) InternalMeeting,
  COUNT(CASE WHEN activity_type = 'TR'  then 1 ELSE NULL END) Training,
  COUNT(CASE WHEN activity_type = 'ISM'  then 1 ELSE NULL END) Office,
  COUNT(decode(CASE WHEN activity_type = 'CS' then 1 when activity_type='10' then 1 when activity_type='SAV'then 1 END,1,1,1)) ExternalMeeting,
  COUNT(CASE WHEN activity_type = '9'  then 1 ELSE NULL END) Symposium,
  COUNT(CASE WHEN activity_type = '12'  then 1 ELSE NULL END) Transit,
  COUNT(CASE WHEN activity_type = 'H'  then 1 ELSE NULL END) Result,
  COUNT(CASE WHEN activity_type = '10'  then 1 ELSE NULL END) CME
    FROM  planner_activity pa
    WHERE tenant_id=500020
       GROUP BY activity_type
     )
     UNPIVOT
     (
  monthly_count
       FOR activity_type IN (HOLIDAY,LEAVE,ANNUAL,OTHER_NO,INTERNALMEETING,TRAINING,OFFICE,EXTERNALMEETING,SYMPOSIUM,TRANSIT,RESULT,CME)
  )

我想做結果的總和..請幫助我..

輸出應為:

Holiday 1
Leave   1
Anuual  2
Other_no 1
Noof days 5

非常感謝您的幫助..

Sunitha ...

嘗試更改為此:

SELECT *
FROM
    (


  SELECT  activity_type,
      COUNT(decode(CASE WHEN activity_type = 'K' then 1 when activity_type='BH' then 1 END,1,1))  Holiday,
  COUNT(decode(CASE WHEN activity_type = 'SL' then 1 when activity_type='2' then 1 END,1,1)) Leave,
  COUNT(CASE WHEN activity_type = 'AL'  then 1 ELSE NULL END) Annual,
  COUNT(CASE WHEN activity_type = 'OL'  then 1 ELSE NULL END) Other_no,
  COUNT(CASE WHEN activity_type = 'IM'  then 1 ELSE NULL END) InternalMeeting,
  COUNT(CASE WHEN activity_type = 'TR'  then 1 ELSE NULL END) Training,
  COUNT(CASE WHEN activity_type = 'ISM'  then 1 ELSE NULL END) Office,
  COUNT(decode(CASE WHEN activity_type = 'CS' then 1 when activity_type='10' then 1 when activity_type='SAV'then 1 END,1,1,1)) ExternalMeeting,
  COUNT(CASE WHEN activity_type = '9'  then 1 ELSE NULL END) Symposium,
  COUNT(CASE WHEN activity_type = '12'  then 1 ELSE NULL END) Transit,
  COUNT(CASE WHEN activity_type = 'H'  then 1 ELSE NULL END) Result,
  COUNT(CASE WHEN activity_type = '10'  then 1 ELSE NULL END) CME
    FROM  planner_activity pa
    WHERE tenant_id=500020
       GROUP BY activity_type
     )
     UNPIVOT
     (
  monthly_count
       FOR new_activity_type IN (HOLIDAY,LEAVE,ANNUAL,OTHER_NO,INTERNALMEETING,TRAINING,OFFICE,EXTERNALMEETING,SYMPOSIUM,TRANSIT,RESULT,CME)
  )

此查詢中兩次使用了activity_type ,這可能會導致問題。

我不確定為什么會收到該錯誤,但為什么不為此單獨進行group by 像這樣:

SELECT grp, count(*)
FROM (SELECT (CASE WHEN activity_type = 'SL' then 'Leave'
                   WHEN activity_type = 'AL' then 'Annual'
                   WHEN activity_type = 'OL'  then 'Other_no'
                   WHEN activity_type = 'IM'  then 'InternalMeeting'
                   WHEN activity_type = 'TR'  then 'Training'
                   WHEN activity_type = 'ISM'  then 'Office'
                   WHEN activity_type IN ('CS', '10', 'SAV') then 'ExternalMeeting'
                   WHEN activity_type = '9' then 'Symposium'
                   WHEN activity_type = '12'  then 'Transit'
                   WHEN activity_type = 'H'  then 'Result'
                   WHEN activity_type = '10'  then 'CME'
              END) as grp, pa.*
      FROM planner_activity pa
      WHERE tenant_id = 500020
     ) t
GROUP BY grp;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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