2017-10-20 37 views
0

Bonjour,Joindre 3 tables dans 1 - 1 table est AGGR table

J'ai 3 tables séparées. 2 tables d'en-tête (1 rangée d'informations chacune) et 1 table de transaction (plusieurs rangées).

Je souhaite joindre la table agrégée aux tables d'en-tête. Les ci-dessous sont mes 3 tables dont je dois me joindre. S'il vous plaît quelqu'un peut-il aider avec la syntaxe.

ARTRNDETAIL: 
SELECT 
    SalesOrder 
    TrnYear, 
    TrnMonth, 
    InvoiceDate, 
    StockCode, 
    QtyInvoiced 
FROM ArTrnDetail 

SORMASTER: 
SELECT 
    SalesOrder, 
    OrderDate, 
    ReqShipDate 
FROM SorMaster 

SorDetail: 
SELECT SalesOrder, 
     sum(MOrderQty) as OrderQty, 
     sum(MShipQty) as ShipQty, 
     MStockCode 
FROM SorDetail 
WHERE MOrderQty > 0 
GROUP By SalesOrder,MStockCode 

J'ai rejoint les deux premiers, comme je veux que les champs de date de SorMaster à ajouter à la table ArTrnDetail à l'aide du tableau ci-dessous: cependant, je ne suis pas sûr de savoir comment ajouter la table agrégée au reste après. S'il vous plaît voir ma tentative ci-dessous:

SELECT 
    ArTrnDetail.SalesOrder 
    TrnYear, 
    TrnMonth, 
    InvoiceDate, 
    StockCode, 
    QtyInvoiced, 
    SorMaster.OrderDate, 
    SorMaster.ReqShipDate 
FROM ArTrnDetail 

INNER JOIN 
    SorMaster ON ArTrnDetail.SalesOrder = SorMaster.SalesOrder 

Ce que je dois maintenant se joindre à la table agr à la table résultante, mais rejoindre sur SalesOrder et Code interne.

S'il vous plaît quelqu'un peut aider. Merci d'avance !

Répondre

0

Vous pouvez mettre les requêtes à l'intérieur et CTEs rejoindre les résultats

;WITH CTE1 AS (
    SELECT 
     ArTrnDetail.SalesOrder 
     TrnYear, 
     TrnMonth, 
     InvoiceDate, 
     StockCode, 
     QtyInvoiced, 
     SorMaster.OrderDate, 
     SorMaster.ReqShipDate 
    FROM ArTrnDetail 
    INNER JOIN SorMaster 
     ON ArTrnDetail.SalesOrder = SorMaster.SalesOrder) 
,CTE2 AS (
    SELECT SalesOrder, 
     sum(MOrderQty) as OrderQty, 
     sum(MShipQty) as ShipQty, 
     MStockCode 
    FROM SorDetail 
    WHERE MOrderQty > 0 
    GROUP By SalesOrder,MStockCode 
) 
SELECT <columns> 
FROM CTE1 
INNER JOIN CTE2 
    ON <your join condition>