【问题标题】:Applying Separate Where Clauses to Separate Columns (SQL) [duplicate]将单独的 Where 子句应用于单独的列 (SQL) [重复]
【发布时间】:2021-06-03 13:23:31
【问题描述】:

是否有可能以简单的方式沿着这些思路做一些事情。我知道这没有意义,但这是我想做的事情:

SELECT 
   SUM(T.SALES) WHERE T.YEAR = '2018'
,  SUM(T.SALES) WHERE T.YEAR = '2019'    
FROM TABLE1 AS T

我想到的比较长的方法是:

SELECT
  (SELECT SUM(T.SALES) FROM TABLE1 AS T WHERE T.YEAR = '2018') AS "2018 TOTAL SALES"
 ,(SELECT SUM(T.SALES) FROM TABLE1 AS T WHERE T.YEAR = '2019') AS "2019 TOTAL SALES"

但这并没有真正的意义。它做了我希望它在 MySQL 中做的事情,但它不是一种标准化的方法。对此的任何帮助都会很棒。

我基本上希望返回 2 列(总销售额),但每列都有自己的单独过滤器(按年份过滤,一个按 2018 年,另一个按 2019 年),如果这可以通过简单的方式完成的话.

【问题讨论】:

    标签: mysql sql select where-clause


    【解决方案1】:

    是的,你可以根据条件来计算:

    SELECT   
    , SUM(case when T.YEAR = '2018' then T.SALES end) "2018 TOTAL SALES"
    , SUM(case when T.YEAR = '2019' then T.SALES end) "2019 TOTAL SALES"
    FROM TABLE1 AS T
    

    【讨论】:

    • 值得说明的是,CASE 表达式的工作方式是,如果没有匹配项,则返回 NULL,而 SUM() 等聚合函数通常会忽略 NULL。
    • @BillKarwin 谢谢你的解释
    • 太棒了,谢谢你们。正是我要找的!
    猜你喜欢
    • 1970-01-01
    • 2022-09-27
    • 2017-04-04
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多