Es posible crear una cláusula ORDER BY para garantizar los siguientes criterios para dos campos (ambos de tipo INT), llamados child
y parent
respectivamente para este ejemplo.Orden de TSQL complejo por cláusula
parent
referenciaschild
, pero puede ser nulo.- Un padre puede tener varios hijos; un niño solo un padre.
- Un niño no puede ser padre de sí mismo.
- Debe existir al menos un hijo sin un padre.
- Cada valor de
child
debe aparecer antes de que aparezca enparent
en el conjunto de resultados ordenados.
estoy teniendo dificultad con el punto 5.
muestra de datos sin ordenar:
child parent
------------
1 NULL
3 5
4 2
2 5
5 NULL
Obviamente ni ORDER BY a, b
o ORDER BY b, a
trabajo. De hecho, cuanto más lo pienso, no estoy seguro de que se pueda siquiera hacer. Dadas las restricciones, los casos obvios tales como:
child parent
------------
1 2
2 1
no están permitidos porque viola la regla 3 y 4 (y, obviamente, 5).
Entonces, ¿qué es lo que estoy tratando de lograr, y de ser así cómo? Plataforma es SQL Server 2005.
Actualización: orden deseado para los datos de la muestra:
child parent
------------
1 NULL
5 NULL
2 5
3 5
4 2
Para cada fila que define un valor no nulo en la columna de la matriz, el valor ya ha estado presente int la columna hija
Podría mostrar los datos de la muestra en el orden deseado, por favor? Eso sería una ayuda. –
Agregado según su solicitud, Brian. –