2016-07-07 8 views
-2

私は2つのテーブル(dwとクリック)を持ち、left joinを使って日付に合っています。 両方のテーブルの日付は2016-06-01です(dwテーブルは1レコード、クリックテーブルは2レコードです)。私はsum dwテーブルの列winlossにしたいが、クリックテーブルは2016年6月1日と2レコードを持っているので、winlossダブル合計を引き起こした。しかし、私はちょうどdwテーブルのwinlossを合計したい。なにか提案を?以下の画像を参照してください。SQLはダブル・ダンプ・レコードのテーブルを残しました

sql (Image)

Expected result

+1

を試してみて、あなたがクリックテーブルからすべてのフィールドが必要ですか? –

+2

期待される結果は何ですか? – Squirrel

+0

@ジョー:はい、私はクリックする必要があります。 – inc

答えて

0

あなたは一時テーブルまたは共通テーブル式でこれを行うことができます。ここに一時はあります。

If object_id('tempdb..#temp') is not null drop table #temp 


select 
sum(winloss) as winloss, 
updated 
--add any other columns you want 
into #temp 
group by 
updated 
--add other columns to group 


select 
t.updated, 
t.winloss, 
c.* 
from #temp t 
left join click on c.trandate = t.updated 
+0

クリックテーブルには2つのレコード(日付は2016-01-01)、さらには一時テーブルに保存され、クリックテーブルにジョインすると2レコードが合計されますが、dwテーブルのwinlossカラムの合計が必要です。 – inc

+0

合計は、日付にグループ化されたdwテーブルでのみ行われます。クリックに基づいて何も合計しない – scsimon

+0

同じ日付の2つのレコードを合計したくないと言っていますか? – scsimon

0

これを試してみてください:

SELECT * 
FROM DW D 
INNER JOIN CLICK C 
ON C.CLICKED = D.CLICKCOUNT 
AND C.TRANDATE = D.UPDATED 
-1

この

SELECT dw.[updated] 
    ,sum(distinct [winloss]) 
from dw,Click 
where dw.updated = Click.trandate 
FROM dw, Click 
group by dw.updated 
関連する問題