数据表:
id teachername student addtime money
1 张三 郁闷 1 2011-2 10
2 李四 郁闷2 2011-3 101
3 王五 郁闷3 2011-4 10
4 张三 郁闷4 2011-5 10
5 张三 郁闷5 2011-6 101
6 王五 郁闷6 2011-7 11
7 王五 郁闷7 2011-8 11
8 李四 郁闷8 2011-8 12
现在我要.net将其显示如下(要求可以根据某字段排序):
张三 郁闷 1 2011-2
郁闷4 2011-5
郁闷5 2011-6
李四 郁闷2 2011-3
郁闷8 2011-8
王五 郁闷3 2011-4
郁闷6 2011-7
郁闷7 2011-8
=========说明,上面由于张三、李四、王五各自有学生N个,但张三、李四、王五只有一个,所以去掉老师名字,避免重复,只显示老师下面的学生,将他们集中在一起显示出来,另外还希望可以按入学时间或者学生的ID来排序。。
到底应该如何做?这个是属于sql语句问题还是程序要判断?
================================另:
要求同时返回money的总和,例如:
张三 郁闷 1 2011-2 121
上面的121是张三的总金钱数。
ps:第一个问题已经勉强用嵌套解决,但如果有更好办法请告知
最重要是第二个问题
id teachername student addtime money
1 张三 郁闷 1 2011-2 10
2 李四 郁闷2 2011-3 101
3 王五 郁闷3 2011-4 10
4 张三 郁闷4 2011-5 10
5 张三 郁闷5 2011-6 101
6 王五 郁闷6 2011-7 11
7 王五 郁闷7 2011-8 11
8 李四 郁闷8 2011-8 12
现在我要.net将其显示如下(要求可以根据某字段排序):
张三 郁闷 1 2011-2
郁闷4 2011-5
郁闷5 2011-6
李四 郁闷2 2011-3
郁闷8 2011-8
王五 郁闷3 2011-4
郁闷6 2011-7
郁闷7 2011-8
=========说明,上面由于张三、李四、王五各自有学生N个,但张三、李四、王五只有一个,所以去掉老师名字,避免重复,只显示老师下面的学生,将他们集中在一起显示出来,另外还希望可以按入学时间或者学生的ID来排序。。
到底应该如何做?这个是属于sql语句问题还是程序要判断?
================================另:
要求同时返回money的总和,例如:
张三 郁闷 1 2011-2 121
上面的121是张三的总金钱数。
ps:第一个问题已经勉强用嵌套解决,但如果有更好办法请告知
最重要是第二个问题
/*teachername student addtime money*/
;with ach as
(
select *,rid=row_number() over (partition by teachername order by id),
(select sum(money) from tb where teachername = t.teachername) amount
from tb t
)select (case when rid=1 then teachername else '' end) teachername,student,addtime,money,amount
from ach
要是确实不能写在页面的,我还是用嵌套得了,不过我还是要解决第二个问题:
1 张三 郁闷1 2011-2 10 520
4 张三 郁闷4 2011-5 10 520
5 张三 郁闷5 2011-6 101 520
上面的数据我要返回:
张三 121 520
select * from 表名 a where not exists(select 1 from 表名 where a=a.a and b=a.b and c>a.c)
这种好像只是判断某列相同,如果相同就取某列,不扔掉没用的字段,显得有些浪费,也没有返回某列的加值
我的意思是对于红色那个表,将第数第二列相加,其它相同列的返回一列,不相同的扔掉,这样的语句有么?