Isnull с целыми числами и символом - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь получить разные дни из двух столбцов, и если столбец ab.Final_billdate равен NULL, я хочу поместить строку «UNBILLED». Я попытался сделать два ниже, но я получаю ошибку.

Это то, что у меня есть, и я получаю сообщение об ошибке в строке без счета.

Преобразование не удалось при преобразовании значения varchar «UNBILLED» для типа данных int.

isnull(datediff(day,ab.Final_billdate,dd.medate),'UNBILLED') as billing

Я пытался создать выражение для случая, подобное этому, но получаю ту же ошибку, потому что я пытаюсь поместить числа и символы в один и тот же вывод колонка. Это возможно? Не уверен, что мне нужно его разыграть?

Это выражение для случая

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

1 Ответ

0 голосов
/ 24 января 2020

вы можете попробовать установить дату 1900-01-01 в нулевые значения, а в подзапросе изменить значение 1900-01-01 на 'UNBILLED'

Select CASE WHEN B.billing ='19000101' THEN 'UNBILLED' ELSE B.billing END AS billing
 From
(
Select case when  ab.Final_billdate is not null then datediff(day,ab.Final_billdate,dd.medate) else '19000101' end as billing
FROM Table AS A
) AS B
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...