2012-04-19 4 views
0

Я должен предоставить подсчеты для разных видов деятельности, некоторые из столбцов взяты из какой-то таблицы, но мало что мне нужно сделать, соединяя другие таблицы. И в последней колонке я должен добавить счетчики * из 5 столбцов Снегурочка в одном поле * .Please см мой запрос ниже, и посоветовать лучший способ для достижения моих результатов :)Сумма в выражении декодирования?

SELECT web. OID,web. MARKETING_GROUP, 
    SUM(DECODE(WEB.EVENT_TYPE,5,WEB.ACTIVITY_COUNT,0)) AS DISCUSSIONCOMMENT , 
    SUM(DECODE(WEB.EVENT_TYPE,6,WEB.ACTIVITY_COUNT,0)) AS DISCUSSIONSTART , 
    SUM(DECODE(WEB.EVENT_TYPE,7,WEB.ACTIVITY_COUNT,0)) AS DISCUSSIONVIEW, 
    SUM(case when o.when _clicked is not null then c(*))AS clickcount, 
    **SUM(case when WEB.EVENT_TYPE in(5,6,7,8)then WEB.ACTIVITY_COUNT +c.count(*))as Total** --------- This is where I am getting stuck and confused??? 
    from GMMI_AIR.WEB_ACTIVITY_FCT WEB join GMMI_AIR.COUPON_WEB_ACTIVITY C 
    on WEB.OID_WEB_ACTIVITY_FCT = C.OID_COUPON_WEB_ACTIVITY 

Я действительно застрял как таблица, которая была соединена, не имеет поля с именем activity_count или activity_type, поэтому, чтобы видеть подсчеты, я могу только подсчитывать (*), но добавлять все остальные записи в один столбец и суммировать их очень сложно.

Любая помощь ??/

+0

Какие базы данных вы используете? – Teja

ответ

1
SELECT web. OID,web. MARKETING_GROUP, 
    SUM(DECODE(WEB.EVENT_TYPE,5,WEB.ACTIVITY_COUNT,0)) AS DISCUSSIONCOMMENT , 
    SUM(DECODE(WEB.EVENT_TYPE,6,WEB.ACTIVITY_COUNT,0)) AS DISCUSSIONSTART , 
    SUM(DECODE(WEB.EVENT_TYPE,7,WEB.ACTIVITY_COUNT,0)) AS DISCUSSIONVIEW, 
    SUM(case when o.when _clicked is not null then c(*))AS clickcount, 
    SUM(case when WEB.EVENT_TYPE in(5,6,7,8)then WEB.ACTIVITY_COUNT END) +c.count(*) as Total 
from GMMI_AIR.WEB_ACTIVITY_FCT WEB join GMMI_AIR.COUPON_WEB_ACTIVITY C 
    on WEB.OID_WEB_ACTIVITY_FCT = C.OID_COUPON_WEB_ACTIVITY 
GROUP BY web. OID,web. MARKETING_GROUP; 
Смежные вопросы