La question est:Comment obtenir ce résultat avec et seulement avec SQL?
Deux tables (t1
, t2
)
Tableau t1
:
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
Tableau t2
:
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
Utilisation SELECT
Déclaration pour obtenir ce résultat:
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
Pour le vendeur A SUM(BAL)
signifie sum(B.BAL,C.BAL,D.BAL)
, B, SUM(BAL)=SUM(A.BAL,C.BAL,D.BAL)
...
S'il vous plaît trouver un moyen avec une bonne performance et ne pas utiliser la table temporaire.
Ma solution:
L'exécution de cette requête obtenir le résultat mais sans la ligne "A 10 0":
select t1.seller, t2.coupon, sum(bal)
from t1, t2
where t1.non_seller = t2.seller
group by t1.seller, t2.coupon
order by t2.coupon
S'il vous plaît aider ~~~~~~
jointure gauche ne contribuent pas, s'il vous plaît Notez les données très soigneusement –
Avez-vous une autre table avec une liste de coupons? Quelle est l'efficacité de la requête? vous pouvez toujours essayer une jointure externe avec une somme (CAS WHEN t2.Seller = t1.NonSeller THEN t2.BAL ELSE 0 END), mais ce n'est pas idéal –
@Jammy Lee: J'ai reformaté votre question. Veuillez consulter la version éditée et lire [Markdown Editing Help] (http://stackoverflow.com/editing-help) pour plus d'informations. –