2015-11-19 2 views
0

Je suis complètement nouveau dans les requêtes SQL et j'ai besoin d'aide pour combiner certaines instructions select pour former une seule requête.Requête SQL Grouper en utilisant Union All

Je vais commencer une requête à la fois:

select sum(DOCI) 
from (
     select POL.SP_NUM, sum(Q.AMT + POL.AMT) DOCI 
     from S_ASSET POL 
     ,  S_QUOTE_ITEM Q 
     where POL.X_QUOTE_ID = Q.ROW_ID 
     and  POL.SP_NUM  in ('000','111','222') 
     group by POL.SP_NUM 

     UNION ALL 

     select POL.SP_NUM, sum(QXM.AMT) DOCI 
     from S_ASSET POL 
     ,  S_QUOTE_ITEM Q 
     ,  S_QUOTE_ITEM_XM QXM 
     where POL.X_QUOTE_ID = Q.ROW_ID 
     and  Q.ROW_ID  = QXM.PAR_ROW_ID 
     and  POL.SP_NUM  in ('000','111','222') 
     group by POL.SP_NUM 
    ) 

Tables:

S_ASSET 
X_QUOTE_ID POL  AMT 
A   000  1 
B   111  1 
C   222  1 

S_QUOTE_ITEM 
ROW_ID  AMT 
A   10 
B   10 
C   1 

S_QUOTE_ITEM_XM 
PAR_ROW_ID AMT 
A   10 
B   0 

Expected O/P: 
POL  AMT(sum) 
A  21 
B  11 
C  2 

S'il vous plaît aider

+0

Quelle est exactement votre question? –

+0

Je souhaite avoir "Sélectionner POL.SP_NUM, somme (DOCI) de (select statements) groupe par POL.SP_NUM" –

+0

peut-être il ya une meilleure technique de codage que ce que j'ai utilisé pour y parvenir –

Répondre

0
SELECT sp_num, SUM(doci) 
    FROM (...subquery...) 
    GROUP BY sp_num; 

Le nom de la table pol existe seulement à l'intérieur du sous-requête. La requête externe sélectionne à partir du résultat de la sous-requête, et non à partir d'une table nommée.

+0

Merci Darwin –