declare @sample table (id int, [type] char(1))insert @sample select 1,'A' insert @sample select 1,'B'insert @sample select 2,'A'insert @sample select 3,'B'insert @sample select 4,'D'select s1.id, 'A' as missingTypefrom @sample s1left join @sample sA on sA.id = s1.id and sA.[type] = 'A'where sA.id is null unionselect s1.id, 'B' as missingTypefrom @sample s1left join @sample sB on sB.id = s1.id and sB.[type] = 'B'where sB.id is null
declare @sample table (id int, [type] char(1));insert @sample select 1,'A' ;insert @sample select 1,'B';insert @sample select 2,'A';insert @sample select 3,'B';insert @sample select 4,'D';with ReqIdsTypes as (select distinct id, dt.[type]from @sample cross join (select [type] from (values ('A'),('B'))dt([type]))dt([type]))select id as MissingId, [type] as MissingType from ReqIdsTypesexceptselect id, [type] from @sample;