名称                  贪污金额001-郭美美              100
001-郭美美              200
002-王军                200    
002-王军                150
001-郭美美(红十字)      140
001-郭美美(开房)        230
002-王军(红十字)        200 
   
要求统计贪污金额,过滤名字后面的字符串正确输出如下:001-郭美美       670
002-王军         550  

解决方案 »

  1.   

    select 名称, sum( 贪污金额)group by 名称
      

  2.   

    select replace(substring(名称,5,3),'(',''),sum(贪污金额)
    from tb group by replace(substring(名称,5,3),'(','')
      

  3.   


    CREATE TABLE TB
    (
    名称 VARCHAR(20),
    贪污金额 INT
    )INSERT INTO dbo.TB
    SELECT '001-郭美美',100
    UNION ALL
    SELECT '001-郭美美',200
    UNION ALL
    SELECT '002-王军',200
    UNION ALL
    SELECT '002-王军',150
    UNION ALL
    SELECT '001-郭美美(红十字)',140
    UNION ALL
    SELECT '001-郭美美(开房)',230
    UNION ALL
    SELECT '002-王军(红十字)',200
    SELECT 名称,SUM(贪污金额)
    FROM 
    (
    SELECT (CASE WHEN CHARINDEX('(',名称)>0 THEN LEFT(名称,CHARINDEX('(',名称)-1) ELSE 名称 END   )AS 名称,贪污金额
    FROM TB
    ) a
    GROUP BY a.名称名称                   
    -------------------- -----------
    001-郭美美              670
    002-王军               550(2 row(s) affected)
      

  4.   

    select replace(substring(名称,5,3),'(',''),sum(贪污金额)
    from a group by replace(substring(名称,5,3),'(','')
      

  5.   

    select replace(substring(名称,1,7),'(',''),sum(贪污金额)
    from a group by replace(substring(名称,1,7),'(','')