一道SQL面试题

有两个表, table1, table2,
Table table1:
SELLER | NON_SELLER
----- -----

A B
A C
A D
B A
B C
B D
C A
C B
C D
D A
D B
D C

Table table2:
SELLER | COUPON | BAL
----- --------- ---------
A 9 100
B 9 200
C 9 300
D 9 400
A 9.5 100
B 9.5 20
A 10 80

要求用SELECT 语句列出如下结果:------如A的SUM(BAL)为B,C,D的和,B的SUM(BAL)为A,C,D的和.......
且用的方法不要增加数据库负担,如用临时表等.

NON-SELLER| COUPON | SUM(BAL) ------- --------
A 9 900
B 9 800
C 9 700
D 9 600
A 9.5 20
B 9.5 100
C 9.5 120
D 9.5 120
A 10 0
B 10 80
C 10 80
D 10 80


下面是我的方法,不知道哪位高手有更好的方法请出招。
select distinct(a.seller),b.coupon,
nvl((select sum(bal) from table2 where seller in 
(select non_seller from table1 where seller=a.seller)
and coupon=b.coupon),0) as sumbal 
from table1 a 
left join table2 b on 1=1 order by b.coupon ;

你可能感兴趣的:(sql,C++,c,面试,C#)