2017-08-24 17 views
0

私はこの問題を巡って私の頭を包み込みたいと思っています。ここで何百万回も答えが出ていますが、正しい質問を探していません。SQL Select同じテーブル複数の合計

私は[販売]巨大な売上テーブルを持っていると私は現時点では私の仕事のPCではないですように私は例示として一緒にこのコードを投げてきた

SELECT DISTINCT S1.[ORDER ID], S1.SUPPLIER, SUM(S1.[ORDER TOTAL]) AS SUPPLIERTOTAL 
FROM [SALES] S1 
LEFT JOIN 
    (
    Select s2.[Order ID], S2.[Supplier], S2.[Supplier Colour], SUM(S2.[Order TOTAL]) AS COLOURTOTAL 
FROM [SALES] 
WHERE [SALES].[SALESDATE] Between '20160101' and '20170101' 
    ) AS s2 
ON s1.[Order ID] = s2.[Order ID] 

を抽出しています。私の問題は、私が再選択を取得すると、最初の選択から正しい順序値が生成されるということです。

E.G製造者がFordであり、合計値が100000であったとします。これは100000を正しく返しますが、サブ選択では合計値をとり、テーブルの合計行数で乗算します。私はデータとクエリで何が起こっているのかを解明しようとしていますが、問題を見ることはできません。

その影響のテーブルは主キーがないが、私は参加して参照整合性を提供していますとそれが事実だろうと信じていなかったということであれば唯一の要因...答えることができ

誰でもかこの問題に遭遇>

+0

ここに報告しますか?両方のテーブルにその列があるように見えますが、なぜその理由がわかりません。 –

+0

これは狂ったように、それが理由であると思われるかもしれません。それは、メーカーごとの注文全体の合計金額が1つの列に表示され、次に分類された合計が別の列に表示されるように要求された理由です。出力期待値に関して明確でない場合、私は彼らが見たいと思っているものの例を模擬することができます... –

+1

外部クエリで使用されないサブクエリに何かを集約しているので、クエリが私を混乱させます。 –

答えて

0

質問があまりにも明確ではないが、私はあなたがこのような何かを探していると思うと、ここでは推測のビット:

誰 `ORDER TOTAL`あなたが実際にやってみたい
SELECT S1.[ORDER ID], S1.SUPPLIER, SUM(S1.[ORDER TOTAL]) AS SUPPLIERTOTAL, SUM(S2.COLOURTOTAL) as COLOURTOTAL 
FROM [SALES] S1 
LEFT JOIN 
    (
    Select s2.[Order ID], S2.[Supplier], S2.[Supplier Colour], S2.[Order TOTAL] AS COLOURTOTAL 
FROM [SALES] 
WHERE [SALES].[SALESDATE] Between '20160101' and '20170101' 
    ) AS s2 
ON s1.[Order ID] = s2.[Order ID] 
GROUP BY S1.[ORDER ID], S1.SUPPLIER 
関連する問題