使用case语句从嵌套查询中获取计数

时间:2014-07-28 19:39:47

标签: sql oracle

我正在尝试编写一个SQL语句,在该语句中,我想将一行中的所有数据分组到两个组中的任意一个组中,然后根据它们对哪个组进行计数。

SELECT vehicle "type", count(*) "count"
FROM(
      SELECT
        CASE
          WHEN auto_type LIKE 'chevy' THEN 'domestic'
          WHEN auto_type LIKE 'ford'  THEN 'domestic'
          ELSE 'foreign'
         END as "vehicle"
       FROM table_name
     )
 GROUP BY vehicle 

我的最终目标是让它显示一个表格,其中包含两种类型的类型和每种类型的计数。嵌套语句本身就像我刚刚得到计数的那样。当我把两者放在一起的时候就是我遇到问题的时候。它给了我一个ORA-00904:“车辆”:无效的标识符错误。

2 个答案:

答案 0 :(得分:2)

SELECT sum(CASE WHEN auto_type IN ('ford','chevy') THEN 1 end) as domestic_cnt, 
       sum(CASE WHEN auto_type NOT IN ('ford','chevy') THEN 1 end) as foreign_cnt
FROM table_name

答案 1 :(得分:2)

请使用车辆作为下面的列,更改删除引号的查询 因为online test工作正常

SELECT vehicle "type", count(*) "count"
FROM(
  SELECT
    CASE
      WHEN auto_type LIKE 'chevy' THEN 'domestic'
      WHEN auto_type LIKE 'ford'  THEN 'domestic'
      ELSE 'foreign'
     END as vehicle
   FROM table_name
 )
GROUP BY vehicle