0

項目、顧客、Invoice_summary、Invoice_details の 4 つのテーブルがあります。ここでは、これら 4 つのテーブルを結合し、特定の item_code と特定の日付範囲の Sum(Invoice_details.Item_quntity) と Sum(Invoice_details.Price) を取得します。主な列は次のとおりです。

Invoice_summary :Inv_num,Inv_date,Cus_id,Total 
Items           :Item_code,Item_name,Unit_price
Invoice_details :Inv_num,Item_code,Item_qty,Price
Customers       :Cus_id,Cus_name,Route

ここに私が現在持っているものがあります.これは、特定のアイテムコードにのみ必要な行(アイテム名全体)以上を返します.誰かが私が間違っている場所を説明できますか.

SELECT Invoice_Table.Item_Code, Items.Item_Name, 
       (Select sum(Invoice_Table.Item_Quntity)  from (Invoice_Table INNER JOIN Invoice ON Invoice_Table.Inv_Num = Invoice.Inv_Num) where ((Invoice_Table.Item_Code=[?]) And Invoice.inv_date Between #3/4/2013# And #6/4/2013#) group BY Invoice_Table.Item_Code) AS Quntity, 
       (Select sum(Invoice_Table.Price)  from (Invoice_Table INNER JOIN Invoice ON Invoice_Table.Inv_Num = Invoice.Inv_Num) where ((Invoice_Table.Item_Code=[?]) And Invoice.inv_date Between #3/4/2013# And #6/4/2013#) group BY Invoice_Table.Item_Code) AS Price 
FROM Invoice_Table 
INNER JOIN Items ON Invoice_Table.Item_Code = Items.Item_Code 
GROUP BY Invoice_Table.Item_Code, Items.Item_Name;
4

2 に答える 2

0

関心のある合計は、このクエリによって得られるはずです。

select Inv_num, Item_code, 
       sum(Item_qty) item_code_qty, 
       sum(Price) item_code_price
from invoice_details
group by Inv_num, Item_code

日付範囲は請求書の概要表にあるはずです。Invoice_summary と Invoice_details は Inv_num で結合できるようです。

select inv_s.Inv_num, inv_s.Inv_date, inv_s.Cus_id, inv_s.Total,
       inv_t.item_code_qty, inv_t.item_code_price
from Invoice_summary inv_s
inner join (select Inv_num, Item_code, 
                   sum(Item_qty) item_code_qty, 
                   sum(Price) item_code_price
            from invoice_details
            group by Inv_num, Item_code
            ) inv_t
        on inv_s.Inv_num = inv_t.Inv_num
where inv_s.Inv_date between ? and ?;

最後に、他の 2 つのテーブルをそれぞれのキーで結合し、列の一部を SELECT 句に追加します。

select inv_s.Inv_num, inv_s.Inv_date, inv_s.Cus_id, cus.Cus_name, inv_s.Total,
       inv_t.item_code_qty, inv_t.item_code_price,
       items.name
from Invoice_summary inv_s
inner join (select Inv_num, Item_code, 
                   sum(Item_qty) item_code_qty, 
                   sum(Price) item_code_price
            from invoice_details
            group by Inv_num, Item_code
            ) inv_t
        on inv_s.Inv_num = inv_t.Inv_num
inner join items on items.Item_code = inv_t.Item_code
inner join Customers cus on cus.Cus_id = inv_s.Cus_id
where inv_s.Inv_date between ? and ?;
于 2013-05-19T11:34:18.573 に答える
0

これを試して..

Select ID.Item_qty,ID.Price,I.Item_code from Invoice_summary IS 
INNER JOIN Invoice_details ID ON ID.Inv_num=IS.Inv_num
INNER JOIN Customers C ON C.Cus_id=IS.Inv_num
INNER JOIN Items I ON I.Item_code=ID.Item_code
于 2013-05-19T10:34:45.977 に答える