请教一个SQL汇总订单金额的问题
master主订单表存储客户信息
orderNo | telphone | customer | address |
---|---|---|---|
A001 | 139888888 | Tom | 李家屯2号院东 |
B003 | 136999999 | Jerry | 李家屯2号院西地下1米 |
detail明细订单表存储物品编码、数量、单价
orderNo | barcode | qty | price |
---|---|---|---|
A001 | 20005 | 36 | 3.1 |
A001 | 20009 | 17 | 2.5 |
A001 | 20007 | 29 | 6.9 |
B003 | 6007 | 12 | 1.8 |
B003 | 6003 | 27 | 1.8 |
B003 | 6008 | 53 | 1.8 |
B003 | 6009 | 71 | 1.8 |
现在要生成如下的表
orderNo | telphone | customer | address | totalPrice |
---|---|---|---|---|
A001 | 139888888 | Tom | 李家屯2号院东 | 354.2 |
B003 | 136999999 | Jerry | 李家屯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中有没有特定的解决方法
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;