Actualizar en la parte inferior.El resultado OUTER JOIN no contiene filas, no hay una cláusula WHERE (Solución alternativa)
Estoy tratando de hacer una unión externa que, para cada registro, la devuelva y todos los demás registros que ocurran después de ella, o NULL si es el último registro. Este es mi código SQL:
SELECT A.[CR#], A.REGIS_STATUSDATE, B.REGIS_STATUSDATE
FROM CR_ADMIN_REGIS_STATUS A LEFT OUTER JOIN CR_ADMIN_REGIS_STATUS B
ON A.[CR#]=B.[CR#] AND A.REGIS_STATUSDATE < B.REGIS_STATUSDATE
Mi problema es que cuando esto es, para un determinado [CR #], A.REGIS_STATUSDATE es un máximo (y por lo tanto la B.REGIS_STATUSDATE no puede ser mayor que ella), que fila no está incluido en mi resultado.
Por ejemplo, si CR_ADMIN_REGIS_STATUS se ve así:
CR# REGIS_STATUSDATE
1 5/1/12
1 5/2/12
1 5/3/12
2 5/1/12
2 5/2/12
espero que el resultado de mi consulta sea
CR# A.REGIS_STATUSDATE B.REGIS_STATUSDATE
1 5/1/12 5/2/12
1 5/1/12 5/3/12
1 5/2/12 5/3/12
1 5/3/12 NULL
2 5/1/12 5/2/12
2 5/2/12 NULL
En vez me sale esto:
CR# A.REGIS_STATUSDATE B.REGIS_STATUSDATE
1 5/1/12 5/2/12
1 5/1/12 5/3/12
1 5/2/12 5/3/12
2 5/1/12 5/2/12
Teniendo en cuenta que mi consulta es una UNIÓN EXTREMA IZQUIERDA, y no tengo ninguna cláusula WHERE, espero que todas las filas de mi tabla original sean en el resultado, pero este no es el caso. ¿Que me estoy perdiendo aqui?
Editar: Esto es en Access 2007
Actualización: Me decidí ver lo que pasaría si he copiado secciones de la tabla CR_ADMIN_REGIS_STATUS en una tabla separada y pasé la consulta contra eso. Incluso cuando acababa de copiar directamente toda la tabla en la nueva (manualmente) ¡la consulta funcionó! Sin embargo, este era solo el caso al copiar y pegar, cuando SELECCIONAR * EN otra mesa, el problema persistía.
el tiempo he descubierto que si me encontré con la consulta contra
SELECT *
FROM CR_ADMIN_REGIS_STATUS
UNION ALL SELECT TOP 1 *
FROM CR_ADMIN_REGIS_STATUS;
más que en sí CR_ADMIN_REGIS_STATUS mi consulta devuelve el resultado deseado. Extraño. También tuve una consulta similar contra una tabla similar que funcionó desde el principio, por lo que parece que este fue un problema limitado a esta tabla.
Qué DBMS está usando? ¿Acceso? –
Bueno, eso me hizo rascarme la cabeza también –
En MS Access 2010 ejecutando su consulta obtengo el resultado esperado. – Fionnuala