2016-07-07 169 views
-2

我有兩個表(dw和click),並使用left join加入它如果匹配日期。 兩個表都有日期2016-06-01(dw表有1條記錄,點擊表有2條記錄)。我想要sum dw表中的列winloss,但是由於click表有2個記錄,日期是2016-06-01,導致winloss雙重和。但我只想在dw表中總結winloss。任何建議?請參考下面的圖片。雙左記錄SQL左連接表

sql (Image)

Expected result

+1

你需要從點擊表中的任何字段? –

+2

預期的結果是什麼? – Squirrel

+0

@Joe:是的,我只需要點擊列。 – 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年1月1日),甚至保存到臨時表中,當加入到單擊表,也將總結2記錄,但我只是想winloss列在DW表的總和。 – inc

+0

總和只在日期分組的dw表上完成。它不會根據點擊求和任何東西 – scsimon

+0

你是說你不想總結同一日期的兩個記錄嗎? – 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