sqlserver根据某一个字段进行求和运算后去掉重复的数据

就如上表所示,需要对相同的人的score字段根据时间进行求和运算,求和完成后展示时去掉重复的人的数据,比如求2011年各人员排名,数据应该是:
张三 宝信 20
李四 宝信 10
其它字段可以忽略,保留一个就行
急求!多谢各位数据帝啊!!!
最后只剩30财富值了.....大家见谅
我这里写了一个查询,但是查出来的数据只是针对求和运算的,无法进行去重操作,大家可以帮我修正下,多谢了!
select name,time_,score,sum(score) over (partition by name) sum_score_by_name
from ccewis.T_LQYJ_INFO t where t.time_ like '2011%'
ORDER BY sum_score_by_name DESC

这个查询查出的数据是:

第1个回答  2014-07-02
你的time,不一样。如果去掉重复的。是time这个字段不要,还是要哪一条数据?

你用的开窗函数,一般都是用来做排序的,去掉重复的,还是要用分组。
第2个回答  2014-07-02
select name ,company,DATEPART(yyyy,time),sum(score)
from table
group by name ,company,DATEPART(yyyy,time)
order by DATEPART(yyyy,time),name ,company

sum()over()的作用,是不改变原来数据条数基础上求和。追问

我试了下,貌似查出来的数据是全部的表数据,time_字段不是DATE类型

追答

where t.time_ like '2011%' 你只需要2011的,就加上这个呗

select name ,company,substring(time_,1,4), sum(score)
from taccewis.T_LQYJ_INFO
where time_ like '2011%'
group by name ,company,substring(time_,1,4)
order by substring(time_,1,4),name,company

相似回答