a ver si entendi:
Código SQL:
Ver originalCREATE TABLE #temp
(
juz VARCHAR(20),
EXP INT,
[año] INT,
inc VARCHAR(20),
fec1 datetime,
fec2 datetime,
fec3 datetime
)
INSERT INTO #temp VALUES ('110402',59,2012,'mario','06/08/2012','06/30/2012','06/01/2012')
INSERT INTO #temp VALUES ('50400',54,2012,'maria','02/18/2012','06/30/2012','02/21/2012')
INSERT INTO #temp VALUES ('50400',54,2012,'jesus',NULL,NULL,'02/21/2012')
INSERT INTO #temp VALUES ('50400',54,2012,'jose',NULL,NULL,'02/21/2012')
INSERT INTO #temp VALUES ('50400',54,2012,'Libras','02/18/2012',NULL,'02/21/2012')
INSERT INTO #temp VALUES ('50400',56,2012,'Libras','02/18/2012',NULL,'02/21/2012')
INSERT INTO #temp VALUES ('50400',56,2012,'Libras','02/18/2012',NULL,'02/21/2012')
SELECT EXP FROM #temp
WHERE (fec1 BETWEEN '01/01/2012' AND '06/30/2012') AND
(fec3 BETWEEN '01/01/2012' AND '06/30/2012') AND (fec3<> '1800-01-01')
AND EXP IN (
SELECT t1.EXP FROM
(SELECT COUNT(*) total, EXP FROM #temp GROUP BY EXP) t1
INNER JOIN (SELECT COUNT(*) total , EXP FROM #temp
WHERE (fec1 BETWEEN '01/01/2012' AND '06/30/2012') AND
(fec3 BETWEEN '01/01/2012' AND '06/30/2012')
GROUP BY EXP) t2 ON t1.EXP=t2.EXP
WHERE t1.total=t2.total
)
GROUP BY EXP
tenemos esos datos entonces segun la logica que planteas deberia de regresar el exp 59 y el 56 el 54 no deberia de contarlo porque aunque cumple con las condiciones de fechas(en 2 casos) el total de registros es de 4 y no todas cumplen con la condicion por el contrario el registro 56 deberia de contarlo como 1 porque aunque aparece 2 veces las 2 veces cumple con la condicion, right???