MySQL, используя max (date) в промежуточном выражении - PullRequest
0 голосов
/ 14 февраля 2019

Любая помощь приветствуется.Я пытаюсь использовать 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

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

1 Ответ

0 голосов
/ 14 февраля 2019

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