SQL если заявление не работает - PullRequest
0 голосов
/ 22 мая 2018

Я не могу получить это, если заявление работает.Я пытаюсь сказать «если (число дат) больше 330, вернуть« х », в противном случае дать мне (количество дат)

SELECT     if(ROUND(COUNT(ClosedDate) / 10, 0) * 10 > 330 then 'X' else ROUND(COUNT(ClosedDate) / 10, 0) * 10) end AS [Previous Day Sales]
FROM         PartsSales
WHERE     (MONTH(ClosedDate) = MONTH(GETDATE())) 
AND       (YEAR(ClosedDate) = YEAR(GETDATE())) 
AND       (DAY(ClosedDate) = DAY(GETDATE() - 13))

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Использование CASE:

SELECT
CASE WHEN ROUND(COUNT(ClosedDate) / 10, 0) * 10 > 330
THEN 'X' ELSE ROUND(COUNT(ClosedDate) / 10, 0) * 10) END AS [Previous Day Sales]
FROM PartsSales
WHERE MONTH(ClosedDate) = MONTH(GETDATE())
AND YEAR(ClosedDate) = YEAR(GETDATE())
AND DAY(ClosedDate) = DAY(GETDATE() - 13)
0 голосов
/ 22 мая 2018

Я бы порекомендовал:

SELECT (CASE WHEN COUNT(*) >= 335 THEN 'X'
             ELSE CAST(ROUND(COUNT(ClosedDate) / 10, 0) * 10) as VARCHAR(255))
        END) AS [Previous Day Sales]
FROM PartsSales ps
WHERE CAST(ClosedDate as DATE) = CAST(DATEADD(day, -13, GETDATE()) as DATE);

Примечания:

  • Вы WHERE предложение слишком сложное.
  • Почему «предыдущий день» используетдень из 13 дней назад?
  • Будь явным о типах!Вы смешиваете строки и числа.Результатом выражения case должна быть строка.
0 голосов
/ 22 мая 2018

Используйте предложение CASE:

SELECT     CASE WHEN ROUND(COUNT(ClosedDate) / 10, 0) * 10 > 330 then 'X' else ROUND(COUNT(ClosedDate) / 10, 0) * 10 end AS [Previous Day Sales]
FROM         PartsSales
WHERE     (MONTH(ClosedDate) = MONTH(GETDATE())) AND (YEAR(ClosedDate) = YEAR(GETDATE())) AND (DAY(ClosedDate) = DAY(GETDATE() - 13))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...