刚才的求助没写完整,实际的需求是这样的:有三张表tbp,tpt,tpu通过主外键关联,现在想根据uname分组,对money求和,如果uname和tname值都相同,则只计算一次。我写的是:
select tbu.uname,sum(tbp.money) from tbp inner join tpt on tbp.tid=tbt.tid inner join tbu on tbp.uid=tbu.uid group by tbu.uname
但是这样显然是重复计算了行。
tbp
pid tid tname uid uname money
1 1 A 1 aa 4.5
2 2 B 1 aa 4
3 2 B 1 aa 4
4 2 B 2 bb 4
5 3 C 2 bb 5.5
6 3 C 2 bb 5.5
7 4 D 2 bb 4
tbt
tid uname
1 A
2 B
3 C
4 D
5 E
uid uname
1 aa
2 bb
3 cc 最后要求的结果是uname sum(money)aa 4.5+4=9.5
bb 4+4.5+4=13.5
select tbu.uname,sum(tbp.money) from tbp inner join tpt on tbp.tid=tbt.tid inner join tbu on tbp.uid=tbu.uid group by tbu.uname
但是这样显然是重复计算了行。
tbp
pid tid tname uid uname money
1 1 A 1 aa 4.5
2 2 B 1 aa 4
3 2 B 1 aa 4
4 2 B 2 bb 4
5 3 C 2 bb 5.5
6 3 C 2 bb 5.5
7 4 D 2 bb 4
tbt
tid uname
1 A
2 B
3 C
4 D
5 E
uid uname
1 aa
2 bb
3 cc 最后要求的结果是uname sum(money)aa 4.5+4=9.5
bb 4+4.5+4=13.5
解决方案 »
- VC6.0下 C语言开发sql server 2008,新人遇到问题,求解。感谢各位大侠
- 这种表的关系该怎样去设计表合适
- 不同表结构应该如何导数据?
- 写一存储过程实现"查找某一内容在现有存储过程中的存储过程",在线等
- 年和月相减的问题
- sql数据库建登陆账号的表问题
- SQL Server 无法向 Microsoft 分布式事务处理协调器(MS DTC)注册为此事务的资源管理器
- sql where子句中包括关键字和时间戳,时间戳是什么意思?
- ###sql server生成的.sql文件可否导回sql server,如何导回###
- 奇怪的问题,小弟求下助!
- 关于存储过程里的变量应用的问题2
- 关于存储过程里的变量应用的问题
在tbp中查询pid等于上面查询出来的pid的记录结构
再对这些结果汇总即可
from tbp t1 join select min(pid) as pid from tbp group by tid,uid t2
on t1.pid=t2.pid