MySQL использует max(date) в операторе between

Любая помощь приветствуется. Я пытаюсь использовать max(date) в операторе CASE и не могу правильно понять синтаксис или ??

// 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

Что я делаю не так - спасибо за любую помощь.

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы пытаетесь использовать 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

Спасибо сработало отлично! Действительно ценю это! Кроме того, для всех, кто использует этот код, не хватает одной круглой скобки прямо перед выбором подзапроса. DATE_FORMAT((выбрать...

Damon Palame 14.02.2019 07:29

Если этот ответ полезен для вас, отметьте его как ответ, чтобы сообщество также могло извлечь из него пользу.

Derviş Kayımbaşıoğlu 14.02.2019 07:32

Обратите внимание, что DATE_FORMAT("2019-01-01", "%Y-%m-%d") на самом деле ничего не делает

Strawberry 14.02.2019 09:13

Другие вопросы по теме