行ID左连接无法获得sum(column)

时间:2019-04-11 15:03:42

标签: sql sql-server tsql

我有一个如下所示的临时表。

ID : type : stat
----------------
1  : t1   :  0
2  : t2   :  0
3  : t3   :  1

我想创建另一个临时表,看起来像

ID : type : stat : qty
----------------------
1  : t1   :  0   : 10
2  : t2   :  0   : 20
3  : t3   :  1   : 30

然而,数量来自具有多个行的另一个表。

ID : junk : junk : qty
----------------------
1  : t1   :  0   :  5
1  : t2   :  0   :  5
2  : t3   :  1   : 15
3  : t1   :  0   :  5
3  : t2   :  0   : 20
3  : t3   :  1   : 10

这是我当前的查询以获取第一个表。


select table1.ID, table1.type, table1.stat  
into #tempTable1
from table1
where start_date >= dateADD(wk, DATEDIFF(wk, 0, getdate()), -1)  --sunday
and start_date <= DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 5) --saturday 

这是我当前的查询尝试将它们组合在一起,但不起作用,但我不知道如何解决。

select #tempTable1.id, #tempTable1.type, #tempTable1.stat, sum(table2.value) as 'qty' 
into #tempTable1
from #tempTable2
left join table2
on #tempTable1.id = table2.id

这给了我错误

" Column '#temptable.type' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. "

我也尝试通过使用ID,类型,统计信息来使用分组。

请忽略小写与大写,在我的实际SQL查询中是正确的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我不明白您为什么使用临时表。 GROUP BYselect t1.ID, t1.type, t1.stat, sum(t2.qty) as qty from table1 t1 left join table2 t2 on t1.id = t2.id where t1.start_date >= dateadd(week, datediff(week, 0, getdate()), -1) and --sunday t1.start_date <= dateadd(week, datediff(week, 0, getdate()), 5) --saturday group by t1.ID, t1.type, t1.stat; 应该执行您想要的操作:

prod(1).sum()