当前位置:编程学习 > C#/ASP.NET >>

一个用户表,一个组队表,怎样得到每个人的得到星级数?

user用户表
id name
1 张三
2 李四
3 王五

team 组队表
uid  start  data
2      1       2012/10
2      3       2012/09
2      4       2012/08
3       1      2012/10

result想要的结果如下:
uname sumstart laststart
李四       8               1
张三       0               0
王五       1               0

怎样得到张三、李四、王五每个人某个时间得到总星数以及上次得到的星数 --------------------编程问答-------------------- 存储过程也可以,现在的情况对我来说的难点是,查出来的重复情况我已经解决了。但是,我要得到上次累计星数,上次星数,总星数。我的上次累计星数不能根据人的不同而改变。我的语句如下:
string sql=sting.Format(@"SELECT B.STNM,
(SELECT start FROM team WHERE TM >'{0}' AND TM<'{1}')AS Ystart ,
(SELECT sum(start) FROM team WHERE TM <='{1}') AS YSUM,SUM(start)as SUM 
FROM team A, user B WHERE A.uid=B.id AND TM<='{2}' group by A.uid,B.name",
time.AddDays(-1).ToString("yyyy-MM-dd"), time.ToString("yyyy-MM-dd"), time); --------------------编程问答--------------------

select A.name,ISNULL(SUM(B.start),0)start from user A
LEFT JOIN team B ON A.id=B.uid
group by A.name
--------------------编程问答-------------------- 我这样写得到的结果是
8,0,8
8,0,0
8,0,1

也就是上次累积星数根本 没有与其它数据同步得到。. --------------------编程问答-------------------- 二楼在线不?
主要问题在于我想要上次累积星数和上次星数呀。
引用 2 楼  的回复:
SQL code

select A.name,ISNULL(SUM(B.start),0)start from user A
LEFT JOIN team B ON A.id=B.uid
group by A.name
--------------------编程问答-------------------- --------------------编程问答-------------------- 首先声明一下,你的data这个字段这里默认是date类型的



select tt.uname,tt.sumstart,ttt.laststart from
(
     select id,name as uname, COALESCE(SUM(start),0) as sumstart from [user] t1 left join team t2
     on t1.id=t2.uid  group by id,name
) tt,
(
     select t1.id,t1.name as uname, COALESCE(start,0)as laststart from [user] t1 left join team t2
     on t1.id=t2.uid and data=(select MAX(data) from team)
) ttt
where tt.id=ttt.id;

补充:.NET技术 ,  .NET技术前瞻
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,