使用表上的单独过滤器执行多个单独的和

时间:2013-04-25 16:50:46

标签: sql sql-server cursor sum

我有一个表,其中包含一个参考字段和一个id列。我需要做的是根据每个参考的ID的不同组合来计算金额。总共有九种不同的组合,然后我需要插入一个单独的表中。

我发现这样做的最好方法是使用游标并单独执行每个SUM,将数量分配给变量并更新每个引用和每个组合的表。

希望有道理!

我希望找到的是 - 有更好的方法吗?

感谢。

2 个答案:

答案 0 :(得分:1)

你可以这样:

SELECT SUM(CASE WHEN (Id = 9) THEN Val ELSE 0 END) ConditionalSum
  From dbo.Table

在一个查询中,您可以拥有许多具有不同条件的SUM。

答案 1 :(得分:1)

您可以创建一个名为combos的表格,其中包含以下列:

  • 组合名称
  • 组合中的参考ID

(也许其他有用的列如id和创建时间,但这在这里并不重要。)

将您的组合插入此表,例如:

First10     1
First10     2
...
First10     10
MyFavorite  42

无论对是什么。

然后,您可以使用单个查询执行所需操作:

select c.comboName, sum(val) as ConditionalSum
from t join
     combos c
     on t.referenceId = c.referenceId
group by c.comboName