Ошибка преобразования при преобразовании значения varchar в регистр

Я не могу обойтись без этого. У нас есть следующий простой запрос.

DECLARE @bFlag bit
SET @bFlag = 0
SELECT  something = CASE
                WHEN @bFlag = 1 THEN
                    CASE
                        WHEN RS.intInterval = 1 THEN '"Days"'
                        WHEN RS.intInterval = 2 THEN '"Weeks"'
                        WHEN RS.intInterval = 3 THEN '"Months"'
                        WHEN RS.intInterval = 4 THEN '"Years"'
                    END
                Else 
                    RS.intInterval
                End
from    MyTable  AS RS WITH (NOLOCK)

Итак, я хочу получитьintInterval(которыйint) еслиflag не установлен вtrue, В противном случае, еслиflag установлен вtrue, Я хочу получитьDays, Weeksи т. д. в зависимости от значенияintInterval, Если я запускаю это с@bFalg = 1Я получаю эту ошибку:

Ошибка преобразования при преобразовании значения varchar '"Weeks" в тип данных int

что не имеет никакого смысла, так как я ничего не конвертирую.

Я знаю, что могу это исправить, поставивcast (intInterval as varchar) вelse часть. Однако я хочу знать причину, почему я получаю эту ошибку, почемуcase пытается преобразовать «Недели» вint?

Ответы на вопрос(1)

Ваш ответ на вопрос