mysql - 查找不同列数的总和

标签 mysql sql sum

我有这样的表:

value1   value2     value3    value4    value5   constant
1          2          3           4         5     2
8          2          8           3         5     2
1          5          3           4         5     3
1          2          6           4         5     3

现在我想做的是,我只想找到那些列数的列的总和作为常量字段中给定的值:

例如在第 1 行中,如果常量值为 2, 我需要找到 value1+value2 的总和。

如果常量中的值为3,我需要求和 value 1+ value2 + value3

抱歉英语不好。什么是合适的方法?我已经在谷歌上搜索了一段时间,但找不到合适的方法

最佳答案

值列固定在 1 到 5 之间?如果不是,则需要生成动态查询。

试试这个:

SELECT
  IF(constant = 1, value1, 
    IF (constant = 2, value1 + value2,
      IF (constant = 3, value1 + value2 + value3,
        IF (constant = 4, value1 + value2 + value3 + value4, value1 + value2 + value3 + value4 + value5)
      )
    )
  )
FROM tab;

已更新

如果我是你,我会这样设计。

tbl1(id, constant),
value_tbl1(tbl1_id, column_seq, value);

SELECT SUM(value)
FROM tbl1 t, value_tbl1 v
WHERE t.id = v.tbl1_id
  AND column_seq BETWEEN 1 AND tbl1.constant

关于mysql - 查找不同列数的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20072250/

相关文章:

MYSQL查询即使更新后也能获取旧记录

sql - sas 中的等效 date_part 函数

mysql - 无法用大写值更新表列

python - Pandas - 在列中附加行值的总和(如果总和为偶数)或 NaN(如果为奇数)

r - 如果所有值都是 NA,则计算总和或返回 NA 的有效方法

mysql - WordNet 3.0 咒语

mysql - 用户排名查询突然停止工作?

php - 将日期格式化为人类可读的格式

mysql - 我的 SQL 在不应该 O.o 的情况下转换为 Int

r - 计算 R 中数据帧行中特定单词的出现次数