2017-09-28 22 views
0

私のクエリの結果が何をすべきかという問題が発生しています。私の直接の前提は、これが2回合計されてこの結果が生まれるということです。私は標準のテーブルから選択するビューを扱っています、そして、私はそれがどこでも合計されているのを見つけることができませんでした。私の次の考えは、どこかで結合すると、同じ値を2回合計してエラーを作成できる重複を作成する必要があるということです。SUMの結果が2倍になる

その大きなビューが、私は労働組合で行うには多分その何かあるかのように感じるが、IVEは本当に前にこのようなものを見たことがない一つの領域に

SELECT 

F.[Person], 
PP.[Team], 
SUM(F.[Figure]) 

from (     
SELECT Distinct Year([Date]) 'Year' 
,Month([Date]) 'Month' 
,convert(varchar(3),Datename(Month,[Date])) 'Mth' 
,[Person] 
from Figure F 

Union all 

Select Distinct 
[Year] 
,[Month] 
,[Mth] 
,[Person] 

FROM Person P 

)g 

Left join [Person2] PP 
on PP.Code = g.[Person] 

    GROUP BY 
    P.[Person], 
    PP.[Team] 

それを絞られています。なぜこれが二重合計を作成しているのか、またはこのエラーをどのように取り除くことができるのか、誰でも助けてくれますか?

おかげで

+1

代わりにユニオンを試してみてください。ちょうどdupsを避けるために? – MiloBellano

+1

期待される出力を持つサンプルデータを追加する –

+0

テーブルpersons2のためにある可能性があります.PP.Codeに重複があると間違った合計になります – Rams

答えて

1

は、私はあなたがそれを承認することができます:)私が助けたことを幸せに

from (     
Distinct Year([Date]) 'Year' 
,Month([Date]) 'Month' 
convert(varchar(3),Datename(Month,[Date])) 'Mth' 
,[Person] 
from Figure F 

Union --all will includes dups, so let's use just union 
Select Distinct 
[Year] 
[Month] 
,[Mth] 
,[Person] 

FROM Person P 

)g 

Left join [Person2] PP 
on PP.Code = g.[Person] 

GROUP BY 
    P.[Person], 
    PP.[Team] 

をここに投稿ので、あなたがしたい場合に答えます!

0

私はあなたのテーブル「PERSON2は」フィールド「コード」にいくつかの重複を持っていると思われます。

あなたは、通常のコードは、それがユニークになるだろう、あなたの主キー、ことを期待したいが、念のために、次のような簡単な文でこれを確認できます。重複が確かに存在する場合

select 
    Code, 
    COUNT(Code) 
from 
    Person2 
group by 
    Code 
having 
    COUNT(Code) >= 2 
order by 
    Code 

、重複が削除されていることを確認するか、または結合する2次フィールドを持っている必要があります(それらの間にいくつかの要素がある場合)。あなたはUNIONの作品を述べたコメントのように

関連する問題