MySQL:在一个查询中根据不同的日期返回两组结果

时间:2018-12-31 08:43:03

标签: mysql

我有以下查询:

SELECT SUM(`dollars`) FROM daily_stats WHERE `day` BETWEEN '2018-07-03' AND '2018-07-08'

SELECT SUM(`dollars`) FROM daily_stats WHERE `day` BETWEEN '2018-07-09' AND '2018-07-14'

我想在一个查询中返回两组结果,最好以具有描述性名称的列的形式返回。 这是我的尝试,但是没有按预期运行,出现语法错误(错误代码1064):

SELECT
 (SELECT SUM(`dollars`) FROM daily_stats WHERE `day` BETWEEN '2018-07-03' AND '2018-07-08') AS last_result,
 (SELECT SUM(`dollars`) FROM daily_stats WHERE `day` BETWEEN '2018-07-09' AND '2018-07-14') AS current_result,
FROM daily_stats

我该怎么做?

1 个答案:

答案 0 :(得分:2)

使用条件和:

SELECT SUM(case when day BETWEEN '2018-07-03' AND '2018-07-08' then dollars else 0 end) w1,
       SUM(case when day BETWEEN '2018-07-09' AND '2018-07-14' then dollars else 0 end) w2
FROM daily_stats 

仅当dollars为真时,这才对case列求和。