1

私はこの種の複雑な結合と合計関数に非常に慣れていません。同じフィールドを持つ 2 つのテーブル クエリがありました。1 番目(i.e: ProdID, ProdName, NetQty, Unit) のクエリにはOpStockが含まれ、2番目のクエリにはPurchaseが含まれます。

現在の在庫を確認できるように、この 2 つのテーブル クエリを追加して 1 つのテーブルを作成したいと考えています。

1 番目のテーブルのデータは次のようになります。

ProdID ProdName Qty
100 Rose     700
101 Lilly    550
103 Jasmine  600
105 Lavender 400

2 番目のテーブルのデータは次のようになります。

ProdID ProdName Qty
100 Rose     400
101 Lilly    250
104 Lotus   1000
106 MariGold 400

3 番目のテーブルの最終データは次のようになります。

ProdID ProdName Qty
100 Rose     1100
101 Lilly     800
103 Jasmine   600
104 Lotus    1000
105 Lavender  400
106 MariGold  400

Access2003のSQLを使用してこれを達成するにはどうすればよいですか。ありがとう。

私は非常に申し訳ありませんCiaran、これは純粋にvb.netに使用されるアクセスですこれが私のアクセスクエリです1

SELECT sp_OpenIandP_Prod.ProdID,
       sp_OpenIandP_Prod.ProdName,
       Sum(([sp_OpenIandP_Prod.SumOfNetQty]-[sp_OpenSales_Prod.SumOfNetQty])) AS NetQty,
       sp_OpenIandP_Prod.UnitSName
FROM sp_OpenIandP_Prod 
     INNER JOIN sp_OpenSales_Prod ON sp_OpenIandP_Prod.ProdID=sp_OpenSales_Prod.ProdID
GROUP BY sp_OpenIandP_Prod.ProdID, 
         sp_OpenIandP_Prod.ProdName, 
         sp_OpenIandP_Prod.UnitSName;

最初のクエリ結果は次のようになります。

ProdID  ProdName    NetQty  UnitSName
1   Rose            0   Kgs
2   Lilly       7125    Mts
3   Lotus       12374   Nos

2 番目のクエリは次のとおりです。

SELECT Products.ProdID, Products.ProdName,
       Sum(OPDDetails.NetQty) AS SumOfNetQty, Units.UnitSName
FROM Units 
     INNER JOIN (Products 
         INNER JOIN (Brands 
             INNER JOIN OPDDetails ON Brands.BrID=OPDDetails.BrandID)
         ON Products.ProdID=Brands.ProdID) 
     ON Units.UnitID=Products.UnitID
WHERE (((OPDDetails.PurID)>0) 
  AND ((OPDDetails.OPDDate)>=[StartDate] And (OPDDetails.OPDDate)<=[EndDate]))
GROUP BY Products.ProdID, Products.ProdName, Units.UnitSName;

結果セットは次のようになります。

ProdID  ProdName    SumOfNetQty UnitSName
1   Rose    1800    Kgs
2   Lilly   21000   Mts

上記の結果は簡単に得られました。しかし、次のように取得するのはそれほど簡単ではありません。

ProdID  ProdName    SumOfNetQty UnitSName
1   Rose    1800    Kgs
2   Lilly   28125   Mts
3       Lotus   12374   Nos

それで全部です。再度、感謝します。

4

2 に答える 2

1

これはvb.netの質問ではありませんが、UNIONを使用する必要があります

Select ProdId, ProdName, Sum(Qty) As QtySum
  From (Select ProdId, ProdName, Qty From TableA
        Union All
        Select ProdId, ProdName, Qty From TableB) DerrivedView
 Group By ProdId, ProdName
于 2012-12-17T11:25:33.280 に答える
0

2 つのクエリ間に UNION を作成し、製品別にグループ化できます。

SELECT ProdID, ProdName, Sum(NetQty) As NetQty, UnitSName
FROM 
( 

    SELECT sp_OpenIandP_Prod.ProdID,
           sp_OpenIandP_Prod.ProdName,
           Sum(([sp_OpenIandP_Prod.SumOfNetQty]-[sp_OpenSales_Prod.SumOfNetQty])) AS NetQty,
           sp_OpenIandP_Prod.UnitSName
    FROM sp_OpenIandP_Prod 
         INNER JOIN sp_OpenSales_Prod ON sp_OpenIandP_Prod.ProdID=sp_OpenSales_Prod.ProdID
    GROUP BY sp_OpenIandP_Prod.ProdID, 
             sp_OpenIandP_Prod.ProdName, 
             sp_OpenIandP_Prod.UnitSName

    UNION ALL

    SELECT Products.ProdID, Products.ProdName,
           Sum(OPDDetails.NetQty) AS NetQty, Units.UnitSName
    FROM Units 
         INNER JOIN (Products 
             INNER JOIN (Brands 
                 INNER JOIN OPDDetails ON Brands.BrID=OPDDetails.BrandID)
             ON Products.ProdID=Brands.ProdID) 
         ON Units.UnitID=Products.UnitID
    WHERE (((OPDDetails.PurID)>0) 
      AND ((OPDDetails.OPDDate)>=[StartDate] And (OPDDetails.OPDDate)<=[EndDate]))
    GROUP BY Products.ProdID, Products.ProdName, Units.UnitSName

)
GROUP BY ProdID, ProdName, UnitSName
于 2012-12-17T12:28:21.510 に答える