表tb里有如下内容单号   姓名      金额01     张小姐     10
01     张小姐     20
01     张小姐     3002     李小姐     30
02     李小姐     40
02     李小姐     1003     任小姐     15
03     任小姐     40
03     任小姐     10想这样输出:
统计单号相同的金额
然后输出不重复的单号和统计的金额输出效果如下
单号   姓名      金额
01     张小姐     60
02     李小姐     80
03     任小姐     65

解决方案 »

  1.   

    SELECT 单号, 姓名, 金额 = SUM(金额)
    FROM tb
    GROUP BY 单号, 姓名
      

  2.   

    select 单号 ,姓名,sum(金额) as 金额 from tb group by 单号 ,姓名
      

  3.   

    select 单号 ,姓名,sum(金额) as 金额 from tb group by 单号 ,姓名 order by 单号
      

  4.   

    select 单号 ,姓名,sum(金额) as 金额 
    from tb 
    group by 单号 ,姓名
      

  5.   

    CREATE TABLE #temp
    (
    单号 VARCHAR(10),
    姓名 NVARCHAR(10),
    金额 INT
    )
    INSERT #temp
    select '01', N'张小姐', 10 union all
    select '01', N'张小姐', 20 union all
    select '01', N'张小姐', 30 union all
    select '02', N'李小姐', 30 union all
    select '02', N'李小姐', 40 union all
    select '02', N'李小姐', 10 union all
    select '03', N'任小姐', 15 union all
    select '03', N'任小姐', 40 union all
    select '03', N'任小姐', 10
    GO
    --SQL1:
    SELECT 单号, 姓名, 金额 = SUM(金额)
    FROM #temp
    GROUP BY 单号, 姓名
    ORDER BY 单号
    --SQL2:
    SELECT DISTINCT 
    单号, 
    姓名, 
    金额 = SUM(金额) OVER(PARTITION BY 单号, 姓名)
    FROM #temp
    /*
    单号         姓名         金额
    ---------- ---------- -----------
    01         张小姐        60
    02         李小姐        80
    03         任小姐        65
    */