MySQL 在 between 语句中使用 max(date)
MySQL using max(date) in a between statement
感谢任何帮助。我正在尝试在 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
感谢任何帮助。我正在尝试在 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