2013-05-13 3 views
0
SELECT WK_NBR,region_cd,plant_cd, POS_GAP_1DAY 
    FROM(SELECT wk_nbr,region_cd,plant_cd, 
     round((CASE WHEN SUM(gap_1day)>0 THEN SUM(gap_1day) ELSE 0 END ),2) AS POS_GAP_1DAY 
     FROM 
     table a 
     group by wk_nbr,region_cd,plant_cd) 

В приведенном выше запросе проблема я облицовкой POS_GAP_1DAY должен суммировать только положительные числа в столбце, но выше запроса не даст правильный ответ, так как я проверить SUM(gap_1day)>0.нужно решить группу по

Проблема: мне нужно сгруппировать по: wk_nbr, region_cd, plant_cd.

Пожалуйста, предложите

ответ

2

сделано на месте, так что я не знаю, если это работает, но ...

SELECT wk_nbr,region_cd,plant_cd, 
     round(SUM(CASE WHEN GAP_1DAY>0 then GAP_1DAY else 0 end),2) AS POS_GAP_1DAY 
    FROM 
    table a 
    group by wk_nbr,region_cd,plant_cd 

не делать то, что вы хотите?

+0

:. Да это делает :(Я новичок в SQL Спасибо большое – MKN

+2

только быстрое примечание .. внешний выберите избыточна в вашем конкретный случай – Davide

3

изменение Try

round((CASE WHEN SUM(gap_1day)>0 THEN SUM(gap_1day) ELSE 0 END ),2) AS POS_GAP_1DAY 

в

ROUND(SUM(CASE WHEN SIGN(gap_1day) > 0 THEN gap_1day ELSE 0 END), 2) AS POS_GAP_1DAY 
+0

Большое спасибо. Он работает :) – MKN

+0

@Mani Приглашаем вас. Рад, что это помогло: D. И поскольку Давиде абсолютно правильно прокомментировал, кажется, что ваш внешний выбор лишний. Поэтому, если вы ничего не делаете с запросом, избавитесь от него. – peterm

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