这个查询如何做,求一条SQL语句(有点难)

ltolll 2005-07-08 05:24:39
客户表
ID 姓名
1 A
2 B
3 C

销售表
销售单号 客户ID
1 1
2 2
3 1

销售明细表
对应销售单号 流水号 金额
1 1 10
1 2 20
2 1 50
3 1 20
3 2 40

问题:想要用SQL语句查出客户消费总额,包括以下字段
客户ID 姓名 消费额
1 A 90
2 B 50
3 C 0

如何做?
...全文
155 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltolll 2005-07-09
  • 打赏
  • 举报
回复
brightheroes(闭关|那一剑的风情)高手的代码测试通过了,估计下面几位高手的也不会差,我等有空再试(不过都会给分的).
这里想问一句如果(按brightheroes高手的方法),客户表中实际上存在多个字段,我为了问问题方便就只列出两个,但我发现这些字段是与SQL语句相关的,就是group by a.id,a.name这句,如果我想在结果中将客户表中的字段都列出来是不是就得将它们都列在group by 中啊,这样做会不会影响执行效率呢?

谢谢!
peng1014 2005-07-09
  • 打赏
  • 举报
回复
mark
xifan930 2005-07-09
  • 打赏
  • 举报
回复
赶紧标记哇
好东西HJOHO
ltolll 2005-07-09
  • 打赏
  • 举报
回复
谢谢大家,这么多不知哪个效率更高.
lanbaibai 2005-07-08
  • 打赏
  • 举报
回复
select a.id as id,sum (金额) as '金额' from ( select a.id as id,c.金额 as '金额' from 客户表 as a,销售表 as b,销售明细表 as c
where a.id=b.客户id and b.销售单号=c.对应销售单号) as t group by id
zyug 2005-07-08
  • 打赏
  • 举报
回复
呵呵,用2和3的好一点

那样如果客户没有肖费,也会有显示是 0 ,也就是用了left outer join
如果是 我写的,那么有了消费才会有记录
colinliu 2005-07-08
  • 打赏
  • 举报
回复
select a.客户ID,d.姓名,a.消费额 (select 客户ID,sum(sum(金额)) 消费额 from ( select 销售单号,sum(金额),客户ID from (select 销售单号,sum(金额) from table3 group by 销售单号) a,table2 b where a.销售单号=b.销售单号 ) group by 客户ID) c,table1 d where c.客户ID=d.客户ID
zyug 2005-07-08
  • 打赏
  • 举报
回复
先选出 每个客户 消费额
select sum(b.金额) as 总金额,a.客户ID from 销售明细表 b inner join 销售表 a on a.销售单号 = b.对应销售单号 group by a.客户ID

然后再和 客户表 一起查讯

select a.*,b.总金额 from 客户表 a inner join
(select sum(b.金额) as 总金额,a.客户ID from 销售明细表 b inner join 销售表 a on a.销售单号 = b.对应销售单号 group by a.客户ID )
b
on a.ID =b.客户ID

这样就满足你的要球了


凨叔 2005-07-08
  • 打赏
  • 举报
回复
select a.ID as [客户ID], a.[姓名], isnull(sum(isnull(c.[金额],0)), 0) as [金额]
from [客户表] a
left join [销售表] b on b.[客户ID] = a.ID
left join [销售明细表] c on c.对应销售单号 = b.销售单号
group by a.ID, a.[姓名]
brightheroes 2005-07-08
  • 打赏
  • 举报
回复
试试
select a.id,a.name, sum(isnull(c.金额,0))
from 客户表 as a
left join 销售表 as b on b.客户ID = a.id
left join 销售明细表 as c on c.对应销售单号 = b.id
group by a.id,a.name

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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