Получить отличительную строку SQL без значений NULL - PullRequest
1 голос
/ 22 сентября 2019

Я пытаюсь получить отдельную строку, используя SQL из набора записей, которые имеют соответствующее значение ключа / идентификатора, но имеют значения NULL в разных столбцах.Трудно объяснить, поэтому, пожалуйста, смотрите скриншот.Есть идеи?

enter image description here

create temporary table my_table (
    id varchar(30), segmentdate1 date, converted1 varchar(10), segmentdate2 date, converted2 varchar(10)
);

insert into my_table (
    id, segmentdate1, converted1, segmentdate2, converted2
)
values
    ('Michael','9/15/2020','No',NULL,NULL),
    ('Michael',NULL,NULL,'7/1/2019','Yes')
;

Ответы [ 2 ]

1 голос
/ 22 сентября 2019
declare @my_table table (
    id varchar(30), segmentdate1 date, converted1 varchar(10), segmentdate2 date, converted2 varchar(10)
);

insert into @my_table (
    id, segmentdate1, converted1, segmentdate2, converted2
)
values
    ('Michael','9/15/2020','No',NULL,NULL),
    ('Michael',NULL,NULL,'7/1/2019','Yes')
;

select id,max(isnull(segmentdate1,'1200-01-01')) segmentdate2
    ,max(isnull(converted1,'')) converted1, max(isnull(segmentdate2,'1200-01-01')) segmentdate2
    ,max(isnull(converted2,'')) converted2
from @my_table
group by id
1 голос
/ 22 сентября 2019

Похоже, вы хотите агрегировать:

select id, max(segmentdate1) as segmentdate1, max(converted1) as converted1,
       max(segmentdate2) as segmentdate2, max(converted2) as converted2
from t
group by id;

Примечание. Я составил имена столбцов, чтобы они были уникальными.

Вероятно, это набор результатов, созданный из другого запроса.Этот запрос, вероятно, имеет неправильные ключи group by.Возможно, вам следует исправить этот запрос.

...