当前位置:  开发笔记 > 数据库 > 正文

根据一列的值计算不同的总和

如何解决《根据一列的值计算不同的总和》经验,为你挑选了1个好方法。

在伪代码中,这基本上是我想要做的:

select
    if a1 >= 0 and a1 <= 2
        a2 + a7 + a8 as sum
    else
        a2 + a8 as sum
from table_name
;

(列名等仅用于说明.)

在英语中:我需要为几千条记录中的每条记录加上不同的列.如果可能的话,我想在SQL中做总结.条件之间只有一个或两个差异,要么是单个列缺失/添加,要么是替换,要么两者都有.这是基于应用程序的业务逻辑,而不是我选择的设计决策.

我正在使用sqlite3(3.6.10),它在某种程度上限制了选项.



1> Mark Byers..:

在这里你可以使用布尔表达式在SQL中评估为0或1的技巧:

SELECT a2 + a8 + a7 * (a1 BETWEEN 0 AND 2) AS SUM
FROM table_name

更通用(也更常规)的方法是使用CASE表达式:

SELECT
    CASE WHEN a1 BETWEEN 0 AND 2
         THEN a2 + a7 + a8
         ELSE a2 + a8
    END AS SUM
FROM table_name

您也可以执行类似这样的操作来包含CASE表达式而不重复常用术语:

SELECT
    a2 + a8 + (CASE WHEN a1 BETWEEN 0 AND 2 THEN a7 ELSE 0 END) AS SUM
FROM table_name

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有