Оператор MS Sql Server внутри COUNT - PullRequest
0 голосов
/ 03 апреля 2019

Это работает в BigQuery, но я не понимаю, что я делаю неправильно в MS SQL Server;

CASE 
    WHEN COUNT( RSM.RECEIVED_AT BETWEEN DATEADD(day, -84,UDATE.SQLDate) AND UDATE.SQLDate ) >= 1 
    AND COUNT(SAL.DATE BETWEEN DATEADD(day, -7, UDATE.SQLDate) AND UDATE.SQLDate) >=2  
    AND COUNT(SAL.DATE BETWEEN DATEADD(day, -14, UDATE.SQLDate) AND DATEADD(day, -7, UDATE.SQLDate)) >= 2 
THEN 'True' 
ELSE 'False' END AS AVAILABLE

В чем проблема ??

  • Неверный синтаксис рядом с ')'.

1 Ответ

1 голос
/ 03 апреля 2019

Я подозреваю что вы ищете:

CASE
            WHEN COUNT(CASE WHEN RSM.RECEIVED_AT BETWEEN DATEADD(DAY, -84, UDATE.SQLDate) AND UDATE.SQLDate THEN 1 END) >= 1
             AND COUNT(CASE WHEN SAL.[DATE] BETWEEN DATEADD(DAY, -7, UDATE.SQLDate) AND UDATE.SQLDate THEN 1 END) >= 2
             AND COUNT(CASE WHEN SAL.[DATE] BETWEEN DATEADD(DAY, -14, UDATE.SQLDate) AND DATEADD(DAY, -7, UDATE.SQLDate) THEN 1 END) >= 2 THEN 'True'
            ELSE 'False'
       END AS AVAILABLE;

Как я сказал в комментариях: «Вы не можете иметь логическое выражение внутри COUNT (или любой другой агрегатной функции), для этого требуется скалярное выражение.»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...