Я должен игнорировать строки, у которых есть null в столбце даты. Как мне это сделать?

select s."SR Closed Date"::date,
       s."Service Request Number",
       a."Activity ID" 
from sr_data_master s,
     activity_master a
where s."Service Request Number" = a."Service Request Number"
and a."Service Request Number" is not null 
and a."Service Tag" is not null 
and a."Activity ID" is not null
and s."SR Closed Date"::date is not NULL
group by s."Service Request Number",
         s."SR Closed Date"::date,
         a."Activity ID";

Я получаю ошибку:

 invalid input syntax for type date: "NULL" 
6
Pallavi Singh 14 Сен 2018 в 14:14

2 ответа

Лучший ответ

null - допустимое значение для даты. Из сообщения об ошибке кажется, что в этом столбце хранится строка «null». Вы можете либо проверить это явно:

LOWER(s."SR Closed Date") <> 'null'

Или просто удалите приведение к date из предложения group by.

1
Mureinik 14 Сен 2018 в 11:22

Сообщение об ошибке указывает на то, что ваш столбец «дата» (который, по-видимому, на самом деле не является столбцом даты) содержит строковую константу 'NULL', а не реальное значение null (потому что нет проблем с приведением реального { Значение {X2}} на значение date).

Вы можете использовать следующее условие для исключения этих строк:

and s."SR Closed Date" <> 'NULL'

Но правильным решением этой проблемы является сохранение значений даты в столбцах DATE. Тогда вам не понадобится приведение, и вы не сможете сохранить недопустимые значения даты для начала.

2
Kamil Gosciminski 14 Сен 2018 в 11:29