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

求大神帮忙 SQL语句的
我的数据库里有一些数据,但是列vcContent中有重复的,但每个事件都有对应的不同的完成度vcCompletePercent,例如30%、40%、50%,我想用SQL语句按照事件选出完成度最大的数据,按照事件分,就是每个事件只选一条(最大的),选出的数据得是此事件的完整信息,就是包括其他的我没提到的列。。。
  哪位大神可以给个SQL语句~~~

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

SELECT A.* FROM 表 A,
(
SELECT 事件,max(vcCompletePercent) AS vcCompletePercent
FROM 表 group by 事件
) B
WHERE A. 事件 = B.事件 AND A.vcCompletePercent = B.vcCompletePercent
------解决方案--------------------
如果是存储过程,可以用临时表,先将 group by 事件 的结果取出来,再关联,可以提高性能,如下:

DECLARE @t TABLE (
事件 varchar(100),
vcCompletePercent DECIMAL(5,2)
)

INSERT INTO @t (事件, vcCompletePercent)
SELECT 事件,max(vcCompletePercent) AS vcCompletePercent
FROM 表 group by 事件

SELECT * FROM 表 A,@t b WHERE A. 事件 = B.事件 AND A.vcCompletePercent = B.vcCompletePercent