CREATE TABLE #tblBlocks ( TemplateID int, BlockID int, FieldID int, BaseStage bit ) GO INSERT INTO #tblBlocks (TemplateID, BlockID, FieldID, BaseStage)SELECT 1, 1, 1, 0 UNION ALLSELECT 1, 1, 2, 0 UNION ALLSELECT 1, 1, 3, 0 UNION ALLSELECT 1, 2, 4, 0 UNION ALLSELECT 1, 2, 5, 1 UNION ALLSELECT 1, 2, 6, 0 GO--SELECT * FROM #tblBlocksDROP TABLE #tblBlocks
SELECT b.* FROM #tblBlocks bWHERE NOT EXISTS ( SELECT 1 FROM #tblBlocks bi WHERE bi.BlockID = b.BlockID AND bi.BaseStage = 1)
CREATE TABLE #tblBlocks ( BlockID int, FieldID int, BaseStage bit ) GO INSERT INTO #tblBlocks (BlockID, FieldID, BaseStage)SELECT 1, 1, 0 UNION ALLSELECT 1, 2, 0 UNION ALLSELECT 1, 3, 0 UNION ALLSELECT 2, 4, 0 UNION ALLSELECT 2, 5, 1 UNION ALLSELECT 2, 6, 0 GOSELECT *FROM #tblBlocks tb1WHERE NOT EXISTS(SELECT 1 FROM #tblBlocks tb2 WHERE tb2.BlockID = tb1.BlockID AND tb2.BaseStage = 1);go--SELECT * FROM #tblBlocksDROP TABLE #tblBlocksgo
CREATE TABLE #tblBlocks ( BlockID int, FieldID int, BaseStage bit ) GO INSERT INTO #tblBlocks (BlockID, FieldID, BaseStage)SELECT 1, 1, 0 UNION ALLSELECT 1, 2, 0 UNION ALLSELECT 1, 3, 0 UNION ALLSELECT 2, 4, 0 UNION ALLSELECT 2, 5, 1 UNION ALLSELECT 2, 6, 0 UNION ALLSELECT 3, 7, 1 UNION ALLSELECT 3, 8, 1 UNION ALLSELECT 3, 9, 1 GOSELECT *FROM #tblBlocks tb1WHERE NOT EXISTS(SELECT 1 FROM #tblBlocks tb2 WHERE tb2.BlockID = tb1.BlockID AND tb2.BaseStage = 0);go--SELECT * FROM #tblBlocksDROP TABLE #tblBlocksgo
CREATE TABLE #tblTemplates ( TemplateID int, TemplateName varchar(50) ) GOINSERT INTO #tblTemplates (TemplateID, TemplateName)SELECT 1, 'Template 1' UNION ALLSELECT 2, 'Template 2' GOCREATE TABLE #tblBlocks ( TemplateID int, BlockID int, FieldID int, BaseStage bit ) GO INSERT INTO #tblBlocks (TemplateID, BlockID, FieldID, BaseStage)SELECT 1, 1, 1, 0 UNION ALLSELECT 1, 1, 2, 0 UNION ALLSELECT 1, 1, 3, 0 UNION ALLSELECT 1, 2, 4, 0 UNION ALLSELECT 1, 2, 5, 1 UNION ALLSELECT 1, 2, 6, 0 UNION ALLSELECT 2, 1, 7, 1 UNION ALLSELECT 2, 1, 8, 0 UNION ALLSELECT 2, 1, 9, 0 UNION ALLSELECT 2, 2, 10, 1 UNION ALLSELECT 2, 2, 11, 0 UNION ALLSELECT 2, 2, 12, 0GOSELECT Distinct #tblTemplates.TemplateName FROM #tblTemplatesINNER JOIN #tblBlocks ON #tblTemplates.TemplateID = #tblBlocks.TemplateID -- plus some more code to satisfy the condition belowDROP TABLE #tblBlocksDROP TABLE #tblTemplates
SELECT BlockIDFROM #tblBlocksGROUP BY BlockIDHAVING MAX(CASE WHEN BaseStage = 1 THEN 1 ELSE 0 END) = 0