代码之家  ›  专栏  ›  技术社区  ›  Benjamin Oakes

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

  •  5
  • Benjamin Oakes  · 技术社区  · 14 年前

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

    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 回复  |  直到 14 年前
        1
  •  8
  •   Mark Byers    14 年前

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

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

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