2016-07-29 10 views
1

本質的に、私は一緒に結合する必要がある2つのテーブル(購入と売り上げ)があります。どちらのテーブルも異なる主キーを持ちますが、同じ外部キーを共有しています。購入が行われるたびに、新しいエントリが作成されます(それ自身のプライマリキーがあります)。販売が行われるたびに、新しいエントリが作成されます(独自のキーを使用)。使用されるテーブルのSQL:2つのテーブルを合計して結合しようとすると重複データを取得する

概要:

Purchase Data 
    Individual Product Cost (AS IPC) 
    Sales Tax (AS ST) 
    Quantity (AS Q) 
    SKU (Foreign Key) 
    Primary Key (AS PK) 

Sales 
    Amount Sold (AS AS) 
    Total (AS T) 
    SSKU(Foreign Key) 
    Primary Key (AS PK) 

私は奇妙な結果を得る製品に基づいてデータを合計して参加しようとします。

購入表のデータ:

SKU | IPC | ST | Q | PK 
    1 2.40 .02 5 1 
    2 5.00 .05 20 2 
    3 4.00 .04 5 3 
    1 5.00 .04 20 4 

売上表:

SSKU | T | AS | PK 
    1  10  2 1 
    2  9  1 2 
    3  9  4 3 
    1  9  1 4 
    2  9  2 5 
    1  9  2 6 
    1  9  4 7 

期待される成果

SKU | (IPC + ST)Q | Q | SUM AS | SUM T 
    1   354.9  25  9  37 
    2   101   20  3  9 
    3   80.8   5  4  18 

OpenOfficeのBaseのスクリプトの作成者をしようとすると、それは私に期待される結果を与えるだろう製品3については、製品1および2については間違っている。

私はSQLプログラミングを読み、その手を試しました。私はこれがマージの前に2つのテーブルを別々に合計することによって問題を解決すると思う。代わりに、私は間違いを今でも受けており、間違いを見つけることはできません。

現在のコード:

SELECT 

"A"."SKU" 
,SUM(("A"."Individual Product Cost" + "A"."Sales Tax") * "A"."Quantity") 
,"A"."Quantity" 
,"D"."Sales" 
,"D"."Sold" 

FROM "PurchaseData" AS "A" 

Inner Join 

(

Select 
"ACT"."SSKU" 
,SUM("ACT"."Amount Sold") AS Sold 
,SUM("ACT"."Total") AS Sales 

From 
"Sales" AS ACT 

GROUP BY 
"ACT"."SSKU" 
) 

AS D  

on "A"."SKU" = "D"."SSKU" 


Group By 
"A"."SKU" 

EDIT:ランダムなオンライン文法チェッカーによると、それはライン3(私はそれを見ることはありません) です。 は、OpenOfficeの基地によると:

SQLステータス:HY000 エラーコード:1000

構文エラー、予期しない$エンド、BETWEENまたはINまたはSQL_TOKEN_LIKE

+0

エラーとは何ですか? –

+0

OpenOfficeの基地によると、ランダムな構文チェッカーによると、その線3上:SQL式 SQLステータスで 構文エラー:HY000 エラーコード:SQL表現 SQLステータス1000 構文エラー:HY000 エラーコード:1000 予期しない$ end、BETWEENまたはINまたはSQL_TOKEN_LIKEを期待する – midir

+1

salesで行ったのと同じサブクエリで購入データを合計し、集計なしで両方のサブクエリを結合することができます – Jayvee

答えて

0

Jayveeのおかげを期待して、私はそれが働きました!

Select 
"A"."SKU" 
,"B"."Sold" 
,"B"."Sales" 
,"A"."Total Cost" 
,"A"."Total Purchased" 

From 

-- First Sub Query -- 
(
Select 

"PD"."SKU" As SKU 
,SUM(("PD"."Individual Product Cost" + "PD"."Sales Tax") *"PD"."Quantity") AS "Total Cost" 
,SUM ("PD"."Quantity") AS "Total Purchased" 

From 
"PurchaseData" AS PD 

GROUP BY 
"PD"."SKU" 
) 
As A 

--End First-- 

Join 
--Start 2nd-- 
(
Select 

"ACT"."SSKU" AS ASKU 
,SUM("ACT"."Amount Sold") AS Sold 
,SUM("ACT"."Total") AS Sales 

From 
"Sales" As ACT 

GROUP BY 
"ACT"."SSKU" 
) 
As B 
--End 2nd-- 

On 
"B"."ASKU" = "A"."SKU" 
0

あなたが販売していたとして、サブクエリで同じを購入データを合計した後、凝集することなく、両方のサブクエリに参加することができます。

Select 
"A"."SKU" 
,"B"."Sold" 
,"B"."Sales" 
,"A"."Total Cost" 
,"A"."Total Purchased" 

From 

-- First Sub Query -- 
(
Select 

"PD"."SKU" As SKU 
,SUM(("PD"."Individual Product Cost" + "PD"."Sales Tax") *"PD"."Quantity") AS "Total Cost" 
,SUM ("PD"."Quantity") AS "Total Purchased" 

From 
"PurchaseData" AS PD 

GROUP BY 
"PD"."SKU" 
) 
As A 

--End First-- 

Join 
--Start 2nd-- 
(
Select 

"ACT"."SSKU" AS ASKU 
,SUM("ACT"."Amount Sold") AS Sold 
,SUM("ACT"."Total") AS Sales 

From 
"Sales" As ACT 

GROUP BY 
"ACT"."SSKU" 
) 
As B 
--End 2nd-- 

On 
"B"."ASKU" = "A"."SKU" 
関連する問題