Это говорит об ошибке, когда я пытался использовать CAST и CASE WHEN вместе - PullRequest
1 голос
/ 14 июня 2019

У меня проблема с приведением CurrRunDate при сравнении значений.

SELECT
    s.Cid, 
    s.MobileNo, 
    AvailableBalance = (SELECT dbo.GetAvailBalAmt(acc,0)/100 FROM SMSCIF), 
    b.CurrRunDate,
    s.CreatedDate,
    s.ExpiryDate,       
    CAST (CASE WHEN
                  b.CurrRundate < s.ExpiryDate THEN '00' 
                  ELSE '01' 
          END) AS RenewStatus
FROM
    SMSCIF s
LEFT JOIN 
    BRPARMS b ON s.br = b.br
WHERE 
    (CAST(s.CreatedDate AS DATE) = b.CurrRundate AND s.status = '00') 
    OR Cast(s.ExpiryDate As Date) = b.CurrRundate

Сообщение об ошибке: неправильный синтаксис рядом с «Cast», ожидаемый «AS».

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Вам нужно CAST( (CASE expression) AS VARCHAR(2)), ваш текущий запрос имеет синтаксическую ошибку.

Измените его на запрос ниже будет работать:

 CAST ((CASE WHEN b.CurrRundate < s.ExpiryDate THEN '00' 
            ELSE '01' END) 
 AS VARCHAR(2)) AS RenewStatus,
0 голосов
/ 14 июня 2019

Присвоение псевдонима выражению не требуется CAST; удалить CAST:

CASE
    WHEN b.CurrRundate < s.ExpiryDate THEN '00' 
    ELSE '01' 
END AS RenewStatus
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...