SET NOCOUNT ON
declare @tabla table(
Dia varchar(2)
,Tarea int
,Objeto int
)
Declare @tablaTarea table(
Tarea int
,Descripcion varchar(10)
)
Declare @tablaObjeto table(Objeto int, Descripcion varchar(10))
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D1',1,100)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D1',1,200)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D1',1,300)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D1',2,200)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D1',2,300)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D2',1,800)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D2',1,900)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D2',3,900)
insert into @tablaTarea (Tarea, Descripcion)
Values(1,'Tarea1')
insert into @tablaTarea (Tarea, Descripcion)
Values(2,'Tarea2')
insert into @tablaTarea (Tarea, Descripcion)
Values(3,'Tarea3')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(100,'Objeto100')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(200,'Objeto200')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(300,'Objeto300')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(400,'Objeto400')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(500,'Objeto500')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(600,'Objeto600')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(700,'Objeto700')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(800,'Objeto800')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(900,'Objeto900')
Select DISTINCT A.Dia, A.Tarea, B.Objeto, CASE WHEN C.Objeto IS NULL THEN 'NO' ELSE 'SI' END [HACER?]
from (SELECT DISTINCT A.Dia, B.Tarea FROM @tabla A,@tablaTarea B) A
LEFT OUTER JOIN (SELECT DISTINCT A.Dia, B.Objeto FROM @tabla A, @tablaObjeto B) B ON A.Dia = B.Dia
LEFT OUTER JOIN @tabla C ON C.Dia = A.Dia AND B.Objeto = C.Objeto AND C.Tarea = A.Tarea
INNER JOIN @tabla D ON D.Objeto = B.Objeto
ORDER BY A.Dia, A.Tarea
Select DISTINCT A.Dia, A.Tarea, B.Objeto, CASE WHEN C.Objeto IS NULL THEN 'NO' ELSE 'SI' END [HACER?]
from (SELECT DISTINCT A.Dia, B.Tarea FROM @tabla A,@tablaTarea B) A
LEFT OUTER JOIN (SELECT DISTINCT A.Dia, B.Objeto FROM @tabla A, @tablaObjeto B) B ON A.Dia = B.Dia
LEFT OUTER JOIN @tabla C ON C.Dia = A.Dia AND B.Objeto = C.Objeto AND C.Tarea = A.Tarea
ORDER BY A.Dia, A.Tarea
SET NOCOUNT OFF