Исключить строку на основе нескольких столбцов - PullRequest
2 голосов
/ 20 сентября 2019

Я пытаюсь исключить строки, в которых все столбцы общего значения имеют пустые значения.

Образцы данных:

market   item_id    gross_1     gross_2   gross_3   period
POLAND   1111       1           2         3         20190301
ESTONIA  2222       blank       2         3         20190302
POLAND   3333       1           blank     3         20190303
POLAND   3333       1           blank     blank     20190304
POLAND   4444       blank       blank     blank     20190305
POLAND   5555       1           2         3         20190306`

Я хочу получить:

market   item_id    gross_1     gross_2   gross_3   period
POLAND   1111       1           2         3         20190301
ESTONIA  2222       blank       2         3         20190302
POLAND   3333       1           blank     3         20190303
POLAND   3333       1           blank     blank     20190304
POLAND   5555       1           2         3         20190306`

Я нашел что-то подобное, но это не работает в снежинке:

WHERE NOT ROW(gross_1, gross_2, gross_3) IS NULL

Ответы [ 2 ]

4 голосов
/ 20 сентября 2019

Использование coalesce():

select * from tablename
where coalesce(gross_1, gross_2, gross_3) is not null
2 голосов
/ 20 сентября 2019

Зависит от того, что означает «пустой».Как показано в данных:

select t.*
from t
where not (gross_1 = 'blank' and gross_2 = 'blank' and gross_3  = 'blank')

Если «пусто» означает пустую строку, то:

select t.*
from t
where not (gross_1 = '' and gross_2 = '' and gross_3 = '')

Если это означает NULL, то:

select t.*
from t
where not (gross_1 is null and gross_2 is null and gross_3 is null)

Все это можно перефразировать с помощью or:

select t.*
from t
where gross_1 is not null or gross_2 is not null or gross_3 is not null
...