我们知道我们通常使用的 语句是:
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
该怎么办? 是不是需要另外建一个表,然后搞个子查询才能得到我要的结果?

解决方案 »

  1.   

    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)
      

  2.   

    SELECT (case when AREA_ID in(1,2) then '上海' else '北京' end) as 地区,sum(NUM) as NUM
    FROM A
    WHERE AREA_ID between 1 and 4 GROUP BY 
    (case when AREA_ID in(1,2) then '上海' else '北京' end) order by sum(NUM)
      

  3.   

    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)
      

  4.   

    呵呵 简单给分吧
    select area_id,num,area from 
    (select  area_id,num, 'bj' as area from t1 where num=1 or num=2 
    union 
    select  area_id,num, 'sh'as area from t1 where num=1 or num=2 ) 
    as aa 
    group by aa.area
      

  5.   

    cese ...when....then....
    SELECT (case when AREA_ID in(1,2) then '上海' else '北京' end) as 地区,sum(NUM) as NUM
    FROM A
    WHERE AREA_ID between 1 and 4 GROUP BY 
    (case when AREA_ID in(1,2) then '上海' else '北京' end) order by sum(NUM)