日期:2014-05-17  浏览次数:20537 次

求SQL语气,谢谢!
姓名  科目  分数
王     数学  1
王     数学  2
王     数学  3
王     语文  1
王     数学  3
张     数学  3
张     数学  3
张     语文  3

得到的结果是:
姓名  记录条数 汇总分
王      5       10

张      3       9


谢谢!

------解决方案--------------------
if OBJECT_ID('tempdb..#temp', 'u') is not null   drop table #temp;
go
create table #temp( [姓名] varchar(100), [科目] varchar(100), [分数] INT);
insert #temp
select '王','数学','1' union all
select '王','数学','2' union all
select '王','数学','3' union all
select '王','语文','1' union all
select '王','数学','3' union all
select '张','数学','3' union all
select '张','数学','3' union all
select '张','语文','3' 

--SQL:
SELECT [姓名] , 记录条数=COUNT(*), 汇总分=SUM([分数])
from #temp
GROUP BY [姓名]
/*
姓名 记录条数 汇总分
王 5 10
张 3 9
*/

------解决方案--------------------

--> 测试数据:@T
declare @T table([姓名] varchar(2),[科目] varchar(4),[分数] int)
insert @T
select '王','数学',1 union all
select '王','数学',2 union all
select '王','数学',3 union all
select '王','语文',1 union all
select '王','数学',3 union all
select '张','数学',3 union all
select '张','数学',3 union all
select '张','语文',3

select [姓名],COUNT(1) AS 记录条数,SUM([分数]) AS 汇总分 from @T GROUP BY [姓名]
/*
姓名   记录条数        汇总分
---- ----------- -----------
王    5           10