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