2017-10-20 3 views
0

Guten Tag,Joining 3 Tabellen in 1 - 1 Tabelle ist aggr Tabelle

Ich habe 3 separate Tabellen. 2 Header-Tabellen (jeweils 1 Zeile mit Informationen) und 1 Transaktionstabelle (zahlreiche Zeilen).

Ich möchte die aggregierte Tabelle auf die Header-Tabellen verbinden. Die folgenden sind meine 3 Tabellen, denen ich beitreten muss. Bitte kann jemand mit der Syntax assistieren.

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 

Ich habe die ersten zwei zusammengefügten, wie ich die Datumsfelder von SorMaster will ArTrnDetail Tabelle hinzugefügt werden die folgende Tabelle: aber ich bin nicht sicher, wie die aggregierte Tabelle anschließend mit dem Rest hinzuzufügen. Sehen Sie bitte meinen Versuch unter:

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

INNER JOIN 
    SorMaster ON ArTrnDetail.SalesOrder = SorMaster.SalesOrder 

Was ich jetzt brauche, ist die aggr Tabelle zu der resultierenden Top-Tabelle zu verbinden, sondern kommen auf Salesorder und StockCode.

Bitte kann jemand helfen. Danke im Voraus !

Antwort

0

Sie können beide Abfragen innerhalb CTEs setzen und kommen Sie mit den Ergebnissen

;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> 
Verwandte Themen