日期:2014-05-19  浏览次数:20397 次

group by 的这个问题大家不知有没有碰到
我们知道我们通常使用的   语句是:
SELECT   AREA_ID,NUM
FROM   A
WHERE   AREA_ID   IN   (1,2,3,4)
GROUP   BY  
AREA_ID  


字段解释;   AREA_ID为   地域代码,NUM为数量
假如查询的结果是

AREA_ID NUM
1 40
2 50
3 60
4 70

而事实上,AREA_ID   为1,2的时候表示   上海,为3,4的时候表示北京
我要得到的结果应该是

地区     NUM
上海     90      
北京     130
该怎么办?   是不是需要另外建一个表,然后搞个子查询才能得到我要的结果?

------解决方案--------------------
SELECT (case when AREA_ID in(1,2) then '上海 ' else '北京 ' end),sum(NUM)
FROM A
WHERE AREA_ID IN (1,2,3,4)
GROUP BY
(case when AREA_ID in(1,2) then '上海 ' else '北京 ' end) order by sum(NUM)