-- 也就是说 表1 left join ( 表2中汇总:根据订单号分组汇总每个订单号的退款情况 ) on (订单号)
-- 也就是说 表1 left join ( 表2中汇总:根据订单号分组汇总每个订单号的退款情况 ) on (订单号) -- 然后在连接的基础上根据 表1 的 合同号分组汇总!即:select .... 表1 left join ( 表2中汇总:根据订单号分组汇总每个订单号的退款情况 ) on (订单号) group by 表1.合同号...
select a.合同号,订单金额(不知道你是怎么计算的),sum(b.退款金额) 退款金额 from a left join (select 订单号 ,sum(退款手续费*退款数量) 退款金额 from b group by 订单号)b on a.订单号=b.订单号 group by a.合同号
SQL> WITH A AS( 2 SELECT 54225 订单号,'2011090518242369' 合同号,'chinabank' 支付方式,10000 支付金额,1 支付手续费,100 销售数量,100 销售价,90 结算价 from dual 3 union 4 SELECT 54224 订单号,'2011090513393769' 合同号,'alipay' 支付方式,10000 支付金额,1 支付手续费,100 销售数量,100 销售价,90 结算价 from dual 5 union 6 SELECT 54226 订单号,'2011090513393769' 合同号,'alipay' 支付方式,10000 支付金额,1 支付手续费,100 销售数量,100 销售价,90 结算价 from dual), 7 B AS( 8 SELECT 54224 ORDER_ID,10 退款手续费,50 退款数量 FROM DUAL 9 UNION ALL 10 SELECT 54224 ORDER_ID,10 退款手续费,10 退款数量 FROM DUAL) 11 SELECT A.合同号,sum(A.支付金额) 支付金额总计,sum(B.退款金额) 退款金额 from A 12 LEFT JOIN 13 (SELECT ORDER_ID,sum(退款手续费*退款数量) 退款金额 from B group by ORDER_ID ) B 14 ON A.订单号=B.ORDER_ID 15 GROUP BY A.合同号;
-- 然后在连接的基础上根据 表1 的 合同号分组汇总!即:select ....
表1 left join ( 表2中汇总:根据订单号分组汇总每个订单号的退款情况 ) on (订单号)
group by 表1.合同号...
left join (select 订单号 ,sum(退款手续费*退款数量) 退款金额 from b group by 订单号)b
on a.订单号=b.订单号
group by a.合同号
2 SELECT 54225 订单号,'2011090518242369' 合同号,'chinabank' 支付方式,10000 支付金额,1 支付手续费,100 销售数量,100 销售价,90 结算价 from dual
3 union
4 SELECT 54224 订单号,'2011090513393769' 合同号,'alipay' 支付方式,10000 支付金额,1 支付手续费,100 销售数量,100 销售价,90 结算价 from dual
5 union
6 SELECT 54226 订单号,'2011090513393769' 合同号,'alipay' 支付方式,10000 支付金额,1 支付手续费,100 销售数量,100 销售价,90 结算价 from dual),
7 B AS(
8 SELECT 54224 ORDER_ID,10 退款手续费,50 退款数量 FROM DUAL
9 UNION ALL
10 SELECT 54224 ORDER_ID,10 退款手续费,10 退款数量 FROM DUAL)
11 SELECT A.合同号,sum(A.支付金额) 支付金额总计,sum(B.退款金额) 退款金额 from A
12 LEFT JOIN
13 (SELECT ORDER_ID,sum(退款手续费*退款数量) 退款金额 from B group by ORDER_ID ) B
14 ON A.订单号=B.ORDER_ID
15 GROUP BY A.合同号;
合同号 支付金额总计 退款金额
---------------- ------------ ----------
2011090513393769 20000 600
2011090518242369 10000
SQL>