【问题标题】:Suming values according to different criteria根据不同标准对值求和
【发布时间】:2012-11-16 04:19:45
【问题描述】:

我想对同一列中的值求和,但取决于不同列中的某些条件,即

value   column1 column2 column3
 11        a       x      m
 45        b       y      n
 50        b       z      p
 12        c       x      p

例如我想要“价值”的总和 column1 = b & column2 = z & column n

我使用了以下语法:

sum(case when column1 = b & column2 = z & column n then value end) total

这行得通,但我要处理很多列,所以有没有更简单的方法来做到这一点。 我在考虑循环,但无法理解 SQL 中的循环。

【问题讨论】:

  • 你在那里所做的工作;或者,如果您只在一个结果之后,您可以将您的条件移动到 where 语句。除非有一些他们遵守的基本规则,否则没有简单的方法可以添加许多不同的条件而不显式添加条件。

标签: mysql sql sql-server sql-server-2008 tsql


【解决方案1】:
SELECT SUM(value) FROM table GROUP BY col1, col2, col3

如果需要特定的集合,您可以使用

SELECT SUM(value) FROM table GROUP BY col1, col2, col3 HAVING col1='a' AND col2='n' AND col3='c'

【讨论】:

  • 这是一种更好的方法,但恐怕我仍然需要在列之间输入所有可能的组合,这是最大的问题,因为我有很多列要处理。
  • 如果你不需要 haing 子句(因为你总是需要将所有变量设置为你需要的)你可以创建一个存储过程 (mysql5+) 来自动创建带有组的查询在所有列上
猜你喜欢
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
相关资源
最近更新 更多