这种数据关系如何显示出来?

scyyzgxh 2011-08-05 04:28:10
数据表:
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:第一个问题已经勉强用嵌套解决,但如果有更好办法请告知
最重要是第二个问题
...全文
43 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
scyyzgxh 2011-08-05
  • 打赏
  • 举报
回复
自己搞定,结帖。。。
scyyzgxh 2011-08-05
  • 打赏
  • 举报
回复
要是实在有困难,不扔掉不相同的列的值,保留其中任意一列也可以,我的意思就是想返回相同的一列值,然后将某列相加,也作为返回值。。
scyyzgxh 2011-08-05
  • 打赏
  • 举报
回复
这种语句MS不能直接写在页面上吧,要放个函数?还有,row_number()是不是2005起才有的函数?


要是确实不能写在页面的,我还是用嵌套得了,不过我还是要解决第二个问题:
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)
这种好像只是判断某列相同,如果相同就取某列,不扔掉没用的字段,显得有些浪费,也没有返回某列的加值
我的意思是对于红色那个表,将第数第二列相加,其它相同列的返回一列,不相同的扔掉,这样的语句有么?
AcHerat 元老 2011-08-05
  • 打赏
  • 举报
回复

/*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

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧