Я пытаюсь получить разные дни из двух столбцов, и если столбец ab.Final_billdate имеет значение NULL, я хочу поместить строку «UNBILLED». Я попытался сделать два ниже, но я получаю сообщение об ошибке.
Это то, что у меня есть, и я получаю ошибку в строке unbilled .
Ошибка преобразования при преобразовании значения varchar 'UNBILLED' в тип данных int.
isnull(datediff(day,ab.Final_billdate,dd.medate),'UNBILLED') as billing
Я пытался сделать выражение case, подобное этому, но получаю ту же ошибку, потому что я пытаюсь поместить числа и символы в один и тот же выходной столбец. Это возможно? Не уверен, что мне нужно его разыграть?
Это выражение случая
case when ab.Final_billdate is not null then datediff(day,ab.Final_billdate,dd.medate) else 'UNBILLED' end as billing
Желаемый результат:
|Billing|
27
54
78
UNBILLED
ОБНОВЛЕНИЕ: вот что я сделал, чтобы получить то, что хотел
,isnull(CONVERT(varchar(8), datediff(day,ab.Final_billdate,dd.medate)), 'UNBILLED') AS AgeFromFinalBill
DATEDIFF
возвращаетint
, а'UNBILLED'
неint
, аvarchar(8)
; ошибка довольно ясна, в чем проблема. Не смешивайте типы данных. Вам будет гораздо лучше просто использовать значениеNULL
. - person Larnu   schedule 24.01.2020varchar
,2
не больше, чем10
; но'2'
больше больше, чем'10'
. Используйте правильный тип данных для ваших данных. - person Larnu   schedule 24.01.2020