请教一个SQL问题(子查询中引用主查询字段)

请教一个SQL汇总订单金额的问题
master主订单表存储客户信息

orderNotelphonecustomeraddress
A001139888888Tom李家屯2号院东
B003136999999Jerry李家屯2号院西地下1米

detail明细订单表存储物品编码、数量、单价

orderNobarcodeqtyprice
A00120005363.1
A00120009172.5
A00120007296.9
B0036007121.8
B0036003271.8
B0036008531.8
B0036009711.8

现在要生成如下的表

orderNotelphonecustomeraddresstotalPrice
A001139888888Tom李家屯2号院东354.2
B003136999999Jerry李家屯2号院西地下1米393.4

使用下面的sql语句,但是在子查询中不能引用主查询中的字段,请问有没有方法解决

select  master.orderNo 
       ,master.telphone 
       ,master.customer 
       ,master.address 
       ,( select sum(detail.qty*detail.price) where detail.orderNO = master.orderNo)
from master,detail

报错就是这个按订单号查询汇总金额:detail.orderNO = master.orderNo
使用的是SqlServer,不知道SqlServer中有没有特定的解决方法

阅读 1.9k
1 个回答

select * ,totalPrice from master m LEFT JOIN
(select d.orderNo , sum(d.price) as totalPrice from detail d GROUP BY d.orderNo
) t on m.orderNo = t.orderNo;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进