MySQL 在 Between 语句中使用 max(date)

标签 mysql max case between

感谢任何帮助。我试图在 CASE 语句中使用 max(date) 但语法不正确或者 ??

// This works    
SELECT
     ROUND(sum(CASE WHEN Document_Date BETWEEN  DATE_FORMAT("2019-01-01", "%Y-%m-%d") AND  DATE_FORMAT("2019-01-31", "%Y-%m-%d") THEN GTotal END),0) TOTAL2019
FROM
salesdata

// But I want to use max(Document_Date) which is 2019-01-31 like so and have tried cast and different combos, but it comes out null or says invalid use of group function.  Document_Date is datetime in DB

    SELECT
         ROUND(sum(CASE WHEN Document_Date BETWEEN  DATE_FORMAT("2019-01-01", "%Y-%m-%d") AND  DATE_FORMAT(max(Document_Date), "%Y-%m-%d") THEN GTotal END),0) TOTAL2019
    FROM
    salesdata

我做错了什么 - 感谢您的帮助。

最佳答案

您正在尝试将 max 聚合与 sum 结合使用。一般来说,如果不使用子查询就无法做到这一点。

检查我的替代解决方案

SELECT
     ROUND(sum(
       CASE WHEN Document_Date BETWEEN  DATE_FORMAT("2019-01-01", "%Y-%m-%d") AND  (select max(Document_date) from salesData) THEN 
         GTotal 
       END),
     0) TOTAL2019
FROM
salesdata

关于MySQL 在 Between 语句中使用 max(date),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54684241/

相关文章:

java - 如何使用 math.max 和 math.min 省略高分和低分

postgresql - SQL统计不同的情况并返回一个表

php - 在多列中搜索多个单词的 SQL 查询

mysql - 在 MySQL 列中查找双引号

mysql - 触发器不工作 :

mysql - 聚合条件,当

sql - 使用 case 语句更新字段

mysql - 内部联接为其中 1 个字段返回错误值

C 编程 - 我对这些函数做错了什么?

php - MySQL JOIN 和 MAX