【发布时间】:2015-09-11 11:14:35
【问题描述】:
我正在尝试在服务器上的表中实现 sumproduct(来自 excel)。
select *
into #myTable2
from #myTable1
select
a,
b,
c,
d,
e,
(
select (c * e)/100*3423) from #myTable1 t1
inner join #myTable t2
on t1.b = t2.b
where b like 'axr%'
) as sumProduct
from #myTable1
但这并不完全奏效。无法发现错误,也许我只是累了或错过了它。
编辑: 样本数据和预期结果
只提及重要的列
c e b a sumProduct
2 4 axr1 2012.03.01 2*4 + 3*8
3 8 axr3 2012.03.01 2*4 + 3*8
7 5 axr23 2011.01.01 7*5 + 3*2
3 2 axr34 2011.01.01 7*5 + 3*2
EDIT2: 我需要一些语法方面的帮助。我正在尝试重写这部分:
select (c * e)/100*3423) from #myTable1 t1
inner join #myTable t2
on t1.b = t2.b
where b like 'axr%'
) as sumProduct
from #myTable1
作为
case
when t.b like 'axr%' then
(sum(t.c * t.e) /100*3234) end as sumProduct from #myTable t
语法不正确,但应该可以这样工作
编辑 3: 让它工作像这样:
case
when b like 'axr%' then
(sum(c*e)/100*3423)end as sumProduct
在代码的最后
group by --had an error without this
a,b,c,d,e
我如何为每个日期执行此操作(假设日期是“a”列或任何名称)。 我怎样才能在上面的代码中加入over (partition by a)?
想要类似的东西
case
when b like 'axr%' then
(sum(c*e)/100*3423 over (partition by a))end as sumProduct
【问题讨论】:
-
样本数据和期望的结果会真正让您的表格更加清晰。
-
从 select (c * e)/100*3423) 中删除最后一个括号
标签: sql sql-server sql-server-2008 sql-server-2012 window-functions