Mysql 将分离Where子句应用于分离列(SQL)
是否有可能以一种过于简单的方式沿着这些路线做一些事情。我知道这没有道理,但这正是我想尝试做的:Mysql 将分离Where子句应用于分离列(SQL),mysql,sql,select,where-clause,Mysql,Sql,Select,Where Clause,是否有可能以一种过于简单的方式沿着这些路线做一些事情。我知道这没有道理,但这正是我想尝试做的: 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 "201
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年过滤),如果这是一种简单的方法。是的,您可以根据以下条件进行计算:
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
是的,您可以根据以下条件进行计数:
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,而NULL通常会被SUM()等聚合函数忽略。@BillKarwin感谢您的解释,非常感谢。正是我要找的!值得解释的是,CASE
表达式的工作方式是,如果没有匹配项,它将返回NULL,而NULL通常会被SUM()等聚合函数忽略。@BillKarwin感谢您的解释,非常感谢。正是我要找的!