sql中 ,和 group by 效果相同的子查询,不要distinct

如题所述

第1个回答  2013-04-03
设表TABLE1有ID,学号,学生,学科,成绩几个字段,其中ID可确定不重复的行。
现要求每个学生总成绩:
GROUP 语句这样写:
SELECT 学号,学生,总成绩=SUM(成绩) from TABLE1 GROUP BY 学号,学生
用子查询这样写:
SELECT 学号,学生,总成绩=ISNULL((SELECT SUM(成绩) from table1 a where a.id=table1.id),0) from TABLE1 where not exists(select 1 from table1 b where b.学号=table1.学号 and b.id<table1.id) GROUP BY 学号,学生

其中第一个子查询求每个学成的总成绩,第二个子查询保证每个学号只出现一次。
第2个回答  2013-04-02
sqlserver2005以上可以用
select *,row_number() over(partition by xx order by xx)rn from tb本回答被网友采纳
第3个回答  2013-04-02
oracle在java调用的时候 distinct 有时候会出错。你可以使用 case when XXXX then 1 再sum一下也是可以实现的
相似回答