sql server 2008 r2: заявление о ситуации в предложении where за текущий финансовый год - PullRequest
2 голосов
/ 28 октября 2011

Я пытаюсь написать код, в котором я хочу видеть только запросы текущего финансового года. Наш финансовый год начинается 1 июля и заканчивается 30 июня

Но когда я пишу следующий код

SELECT
    group_name
    ,SUM(CASE WHEN status = 'HOLD'THEN 1 ELSE 0 END) AS HOLD    
    ,SUM(CASE WHEN status = 'CL'THEN 1 ELSE 0 END) AS CL
    ,SUM(CASE WHEN status = 'OP'THEN 1 ELSE 0 END) AS OP
FROM dbo.View_Request 
WHERE CASE WHEN datepart(mm, GetDate()) > 6 THEN /*It is past June in this year*/
            datepart(mm,dateadd(second,open_date,'19700101')) >= 7
            AND datepart(yy,dateadd(second,open_date,'19700101')) = datepart(yy, GetDate())
        ELSE /*It is June 30th or earlier in the year*/
            CASE WHEN datepart(mm,dateadd(second,open_date,'19700101')) <= 6 THEN
                datepart(yy,dateadd(second,open_date,'19700101')) = datepart(yy, GetDate())
            ELSE
                datepart(yy,dateadd(second,open_date,'19700101')) = datepart(yy, GetDate())-1
            END
        END
GROUP BY group_name

Я получаю смутное сообщение об ошибке:

Сообщение 102, Уровень 15, Состояние 1, Строка 8
Неверный синтаксис рядом с '>'.

Как исправить этот код, чтобы проверять только записи текущего финансового года

1 Ответ

2 голосов
/ 28 октября 2011

Ваш первый случай немного забавен:

CASE WHEN datepart(mm, GetDate()) > 6 THEN /*It is past June in this year*/
        datepart(mm,dateadd(second,open_date,'19700101')) >= 7  
        AND datepart(yy,dateadd(second,open_date,'19700101')) = datepart(yy, GetDate())

Видите эту вторую и третью строку ??Кто они такие??

Ваш оператор CASE всегда должен быть:

CASE WHEN (condition) THEN (return value)
     WHEN (condition 2) THEN (return value 2)
     ...
     ELSE (return value x)
END

Эти две строки действительно не помещаются там - после ключевого слова WHEN у вас должно быть просто простое выражение, которое возвращаетодно значение - не две строки кода .....

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