双左记录SQL左连接表

双左记录SQL左连接表

问题描述:

我有两个表(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

您可以用临时表或公共表表达式做到这一点。这是一个温度。

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

试试这个:

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

试试这个

SELECT dw.[updated] 
    ,sum(distinct [winloss]) 
from dw,Click 
where dw.updated = Click.trandate 
FROM dw, Click 
group by dw.updated