我有一个如下所示的临时表。
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查询中是正确的。
感谢您的帮助。
答案 0 :(得分:1)
我不明白您为什么使用临时表。 GROUP BY
和select 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()