2014-09-15 3 views
0

Во время работы ниже заявления я получаю «Column ambiguosuly определенный» ..UNPIVOT: Колонка двусмысленно определяется

Пожалуйста, помогите мне в этом ..

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) 
) 

Я хочу, чтобы сделать сумму результата. .please помочь мне ..

Выход Шоуда быть:

Holiday 1 
Leave 1 
Anuual 2 
Other_no 1 
Noof days 5 

Большое спасибо за вашу помощь ..

Sunitha ...

ответ

0

Я не уверен, почему вы получаете эту ошибку, но почему бы не сделать ни одного 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; 
+0

Привет, Гордон, Большое спасибо за ваш ответ. Я могу получить результат ниже, как отдельный ряд. Няни дня Сумма (количество) ... Большое спасибо за помощь. – Sunitha

1

Попробуйте изменить это:

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 используется два раза в этом запросе, возможно, что вызывает проблему.

+1

Вы пригвоздили проблему и решение. Его исходное предложение «FOR activity_type IN» ссылается на столбец в его исходной таблице, когда ему нужно идентифицировать новый столбец для хранения значений (например, HOLIDAY, LEAVE, ANNUAL и т. Д.). – StewS2

Смежные вопросы