SELECT '住宅楼' AS 楼宇类别2,
  SUM(CASE WHEN FLDEX1 = '1' THEN 1 END ) AS 楼宇类别2_统计
  FROM TAR_STATION NBV
  union all
  SELECT '公众商住楼',
  SUM(CASE WHEN FLDEX1 = '2' THEN 1 END )
  FROM TAR_STATION NBV
  union all
  SELECT '企业商住楼',
  SUM(CASE WHEN FLDEX1 = '3' THEN 1 END )
  FROM TAR_STATION NBV
  union all
   SELECT '商务楼宇',
  SUM(CASE WHEN FLDEX1 = '4' THEN 1 END )
  FROM TAR_STATION NBV
  union all
  SELECT '客户自用楼',
  SUM(CASE WHEN FLDEX1 = '5' THEN 1 END )
  FROM TAR_STATION NBV

解决方案 »

  1.   

    SUM(CASE WHEN FLDEX68 = '3' THEN 1 END )   那为什么  END 前面还要跟个 1 那 
    您能说的详细点吗  我对这方面不了解  刚刚入行  谢谢您了  
      

  2.   

    他其实就是想统计出各种类别的总数嘛,
    SUM(CASE WHEN FLDEX68 = '3' THEN 1 END ) 对于FLDEX68 = '3'的记录,查询出的结果是1,最后sum下求和,就是求出所有FLDEX68 = '3'的,不过这样有意思么。
      

  3.   

    直接这样方便多了  select decode(FLDEX1,
                    '1',
                    住宅楼,
                    '2',
                    '公众商住楼',
                    '3',
                    '企业商住楼',
                    '4',
                    '商务楼宇',
                    '5',
                    '客户自用楼') as 楼宇类别2,
             count(*)
        from TAR_STATION
       where FLDEX1 in ('1', '2', '3', '4', '5')
       group by decode(FLDEX1,
                       '1',
                       住宅楼,
                       '2',
                       '公众商住楼',
                       '3',
                       '企业商住楼',
                       '4',
                       '商务楼宇',
                       '5',
                       '客户自用楼')