地区              人数
沈阳市             2 
沈阳市-铁西区      2
沈阳市-苏家屯区    2
葫芦岛市           4
葫芦岛市-南票区    4
葫芦岛市-绥中县    4我想要分组显示的结果
地区              人数
沈阳市             6
葫芦岛市           12如何写 SQL 语句 请大家给予解答

解决方案 »

  1.   

    我用到了这个  
    GROUP BY LEFT(地区, CHARINDEX('-', 地区) - 1)
    但统计不了 沈阳市 和 葫芦岛市
      

  2.   

    SELECT (CASE charindex('-', 地区) WHEN 0 THEN 地区
            ELSE LEFT(地区, CHARINDEX('-', 地区) - 1) END) AS 地区名称, 
            SUM(人数)
    FROM TABLE
    GROUP BY (CASE charindex('-', 地区) WHEN 0 THEN 地区
              ELSE LEFT(地区, CHARINDEX('-', 地区) - 1) END)
      

  3.   

    create table abcd(地区 varchar(20),人数 int)
    insert into abcd
    select '沈阳市', 2 
    union all select '沈阳市-铁西区',  2
    union all select '沈阳市-苏家屯区', 2
    union all select '葫芦岛市',    4
    union all select '葫芦岛市-南票区',4
    union all select '葫芦岛市-绥中县', 4
    select (case when  CHARINDEX('-', 地区)>0 then LEFT(地区,  
     CHARINDEX('-', 地区) - 1  ) else  地区 end) as 地区 ,sum(人数) as 总人数 
    from abcd GROUP BY (case when  CHARINDEX('-', 地区)>0 then LEFT(地区,  
     CHARINDEX('-', 地区) - 1  ) else  地区 end)
    drop table abcd
      

  4.   

    SELECT LEFT(地区+'-',CHARINDEX('-',地区+'-')-1),SUM(人数)
    FROM tb
    GROUP BY LEFT(地区+'-',CHARINDEX('-',地区+'-')-1)
      

  5.   

    leaohong(无定河) 谢谢你 好用