2013-05-13 103 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 2013-05-13 08:18:59

+2

只是一个快速的注意..外部选择是多余的具体案例 – Davide 2013-05-13 08:21:22

3

尝试改变

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 2013-05-13 08:20:15

+0

@Mani不客气。很高兴帮助:D。正如Davide绝对正确评论的那样,你的外部选择似乎是多余的。因此,如果你没有做任何其他的查询摆脱它。 – peterm 2013-05-13 08:26:57