2017-10-20 15 views
0

良い日、3テーブルを1 - 1テーブルに結合することはaggrテーブル

私は3つの別々のテーブルを持っています。 2つのヘッダーテーブル(それぞれ1行の情報)と1つのトランザクションテーブル(多数の行)。

ヘッダーテーブルに集約テーブルを結合します。以下は私が参加する必要がある私の3つのテーブルです。誰かが構文を助けることができますか?

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 

私はSorMasterから日付フィールドは以下の表を使用してArTrnDetailテーブルに追加することにしたいように私は、最初の二つに参加している:しかし、私はその後残りの部分に集約されたテーブルを追加する方法を確認していません。私は今必要なもの

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

INNER JOIN 
    SorMaster ON ArTrnDetail.SalesOrder = SorMaster.SalesOrder 

結果のトップテーブルにAGGRテーブルに参加することですが、SalesOrderと自社コードに参加する:下の私の試みは、ご覧ください。

誰かが助けてください。前もって感謝します !

答えて

0

あなたはCTEの内部の両方のクエリを入れて、その結果

;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> 
に参加することができます
関連する問題