有三个表:
userinfo(用户基本信息):
postcode
username
addr
procinfo(用户提供的产品记录)(同一用户可能有多条记录):
username 用户名
product 产品
pMoney 产品金额
transinfo(支付记录)(同一用户可能有多条记录)):
ID 流水号
username 用户名
ActMoney 支付金额
现要由三个表使用一句SQL查询得到金额/支付表
用户名 地址 邮编 总金额(对产品金额求和)已支付金额(对支付金额求和)
username addr postcode totalmoney payedmoney
解决方案 »
- 有mssql dba吗 去哪认证 具备什么样 条件?
- 数据库搜索
- mssql2000 ASP生成字母索引A到Z 超时问题.
- 无法用guest帐号登录SQL,客户端要连接上数据户可以怎样操作?
- SQL Server 2005 Beta 2 汉字数据简繁转换实例 (CLR,Assemblies)
- !!!在线急等!!电信运营商需要统计每天的忙时,请大侠看能否实现,多谢!
- 请问这样的SQL语句怎么写?在线等待
- dts问题
- 应该是个简单的问题,进来看了就清楚了...
- 谁有好办法?
- 有两个表(A和B,都只有一个字段C),A表的C字段里面有1、2、3、4、5、6、7、8、9、10这10个值,B表的C字段里面有1、2、3这3个值。----问:怎么可以查询出A表里面的4-10的值,不能使用not in
- 怎么能从这个表里选出不同的KC_ID记录,如果有多条记录,选择KC_TIME最大的那条?
from userinfo a,procinfo b,transinfo c
where a.username = b.username and a.username = c.username
group by a.username
from userinfo a left join procinfo b on a.username = b.username
left join transinfo c on a.username = c.username
group by a.username
--三表username完全匹配,用内连接
select a.username,a.addr,a.postcode,totalmoney = sum(b.pMoney) , payedmoney = sum(ActMoney)
from userinfo a,procinfo b,transinfo c
where a.username = b.username and a.username = c.username
group by a.username --三表username不匹配,用左连接.
select a.username,a.addr,a.postcode,totalmoney = isnull(sum(b.pMoney),0) , payedmoney = isnull(sum(ActMoney),0)
from userinfo a left join procinfo b on a.username = b.username
left join transinfo c on a.username = c.username
group by a.username
错误报告是
服务器: 消息 8120,级别 16,状态 1,行 1
列 'a.addr' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 1
列 'a.postcode' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
--三表username完全匹配,用内连接
select a.username,a.addr,a.postcode,totalmoney = sum(b.pMoney) , payedmoney = sum(ActMoney)
from userinfo a,procinfo b,transinfo c
where a.username = b.username and a.username = c.username
group by a.username,a.addr,a.postcode --三表username不匹配,用左连接.
select a.username,a.addr,a.postcode,totalmoney = isnull(sum(b.pMoney),0) , payedmoney = isnull(sum(ActMoney),0)
from userinfo a left join procinfo b on a.username = b.username
left join transinfo c on a.username = c.username
group by a.username,a.addr,a.postcode