Другой подход к использованию cte и temptables:
Попробуйте ниже:
create table #temp (mygroup int, var1 int, var2 int)
insert into #temp values
(1 , 1, null),
(1 , 2, 1),
(1 , 3, 2),
(1 , 4, null),
(2 , 23, 23 ),
(2 , 24, 20 ),
(2 , 26, null),
(3 , 30, 10),
(3 , 20, null),
(3 , 10, null)
;with cte as (
select t.mygroup, t.var1, t2.var2
from #temp t
inner join #temp t2 on t2.var2=t.var1 and t2.mygroup = t.mygroup
)
select var2
into #notIncludeList
from #temp
where var2 not in (select var1 from cte)
select mygroup
from #temp
where var2 in (select var2 from #notIncludeList)
group by mygroup
Это решение работало в MsSql-2014.
Я не делал C++ в течение долгого времени, но от этой статьи, кажется, что это - прием производительности для остановки воссоздания символов для общих заголовков.
Вы могли попробовать/Z7, чтобы встроить информацию в каждый obj, и не создать PDB и затем связать и воссоздать его с переосновой как в этой статье.
Никакая потребность объединить файлы PDB.
Скомпилируйте исходные файлы с/Z7, чтобы не создавать PDB во время шагов CL.EXE.
Используйте LIB.EXE для создания статического libaries со встроенной отладочной информацией. Используйте LINK.EXE вместо CL.EXE, чтобы связать, использовать/PDB для определения, куда отладочная информация идет.
Если Вы отлаживаете процесс с EXE и одним или несколькими DLLs, подаете Ваш отладчик PDB для каждого изображения (EXE или DLL).