Me parece que entiendo cual es el problema-
en caso que tienes 3 filas del 03/08/2013 (distintas horas) en una tabla
y 5 filas del 03/08/2013 en la otra
quieres obtener 5 filas de esta fecha (3 con fechas de ambas tablas y 2 con fechas de la segunda)
y lo que obtenes son 3*5=15 filas.
Si este es el problema, la solución puede ser así (te adjunto un ejemplo y tendras que cambiar los nombres de las tablas y de las columnas y supongo que utilizas la versión 2005 o más alta):
Código SQL:
Ver originalCREATE TABLE #T1(Fecha DateTime);
INSERT INTO #T1 SELECT '20130101 10:00';
INSERT INTO #T1 SELECT '20130101 13:00';
INSERT INTO #T1 SELECT '20130102 09:00';
INSERT INTO #T1 SELECT '20130103 12:00';
INSERT INTO #T1 SELECT '20130103 20:00';
CREATE TABLE #T2(Fecha DateTime);
INSERT INTO #T2 SELECT '20130101 19:00';
INSERT INTO #T2 SELECT '20130102 01:00';
INSERT INTO #T2 SELECT '20130102 09:00';
INSERT INTO #T2 SELECT '20130102 19:00';
INSERT INTO #T2 SELECT '20130104 17:00';
WITH T1 AS
(SELECT ROW_NUMBER() OVER(Partition BY DateAdd(DAY,DateDiff(DAY,0,Fecha),0) ORDER BY Fecha) Nm,
*
FROM #T1
WHERE EXISTS (SELECT 1
FROM #T2
WHERE DateDiff(DAY,#T1.Fecha,#T2.Fecha)=0)),
T2 AS
(SELECT ROW_NUMBER() OVER(Partition BY DateAdd(DAY,DateDiff(DAY,0,Fecha),0) ORDER BY Fecha) Nm,
*
FROM #T2
WHERE EXISTS (SELECT 1
FROM #T1
WHERE DateDiff(DAY,#T1.Fecha,#T2.Fecha)=0))
SELECT *
FROM T1
FULL OUTER JOIN T2
ON DateDiff(DAY,T1.Fecha,T2.Fecha)=0
AND T1.Nm=T2.Nm;
No estoy seguro que esta solución es la más eficaz,
y de hecho - con tablas grandes el rendimiento sera muy bajo aun tengas indexes en la columna fecha.