Tengo una consulta que UNIONs dos datasets algo similares, pero ambos tienen algunas columnas que no están presentes en el otro - es decir, las columnas tienen valores NULL en la UNIÓN resultante. El objetivo de la UNIÓN es obtener los datos en un formato amigable para el lado del software.TSQL ORDER-BY con una UNIÓN de conjuntos de datos dispares
El problema es que necesito ORDENAR los datos resultantes utilizando las columnas que solo existen en uno u otro conjunto.
Por ejemplo: Table1 tiene campos ID, Cat, Precio. Table2 tiene campos ID (igual que en la Tabla 1), Nombre, Abbrv.
Mi consulta se parece a algo como esto:
SELECT t1.ID, t1.Cat, t1.Price, NULL as Name, NULL as Abbrv FROM t1
UNION
SELECT t2.ID, NULL as Cat, NULL as Price, t2.Name, t2.Abbrv FROM t2
ORDER BY Price DESC, Abbrv ASC
El ORDER BY es donde estoy atascado. Los datos se ve así:
100---Balls-----1.53----------------------
200---Bubbles---1.24----------------------
100---------------------RedBall----101RB--
100---------------------BlueBall---102BB--
200---------------------RedWand----201RW--
200---------------------BlueWand---202BW--
Pero yo quiero que se vea como esto:
100---Balls-----1.53----------------------
100---------------------RedBall----101RB--
100---------------------BlueBall---102BB--
200---Bubbles---1.24----------------------
200---------------------RedWand----201RW--
200---------------------BlueWand---202BW--
(disculpas si esas son difíciles de leer - no sabía qué otra manera de mostrar una tabla)
Tenga en cuenta que este es un muy ejemplo embrutecido y el proverbial "use a JOIN!" la respuesta no es aplicable (es decir, ya sé cómo UNIRSE a ellos, pero eso no es lo que quiero en el resultado final).
Bien podría ser que la única forma de lograr esto es manipulando los datos en el software una vez que regrese de la capa de datos, si ese es el caso, entonces que así sea. Pero espero que se pueda hacer en TSQL.
¿La identificación no vincula sus productos T2 con el producto T1? Si no, ¿cómo sabes que RedWand y BlueWand vienen justo después de Bubbles? – mundeep
Él dice en la pregunta: "Tabla2 tiene campos ID (igual que en la Tabla 1)" –
Gracias por todas las respuestas a todos; esta es solo mi primera pregunta, pero esto ya parece una gran comunidad. Además, para aquellos que critiquen la 'arquitectura' que implica mi pregunta, por favor, tenga en cuenta lo que dije arriba y abajo en la respuesta aceptada: ¡esto es un ejemplo simplificado! Las 'tablas' en mi pregunta en realidad representan dos consultas SELECT muy complejas que involucran múltiples tablas y subconsultas, con agregados y campos calculados. ¡Gracias de nuevo! – NateJ