Al examinar esta sección de comentarios, me encontré con dos patrones diferentes que respondían a la pregunta. Lamentablemente, para SQL 2012, el segundo patrón no funciona, así que aquí está mi "solución alternativa"
Ordenar por en una columna común
Este es el caso más fácil que puede encontrar. Como señalaron muchos usuarios, todo lo que realmente necesita hacer es agregar un Order By
al final de la consulta
SELECT a FROM table1
UNION
SELECT a FROM table2
ORDER BY field1
o
SELECT a FROM table1 ORDER BY field1
UNION
SELECT a FROM table2 ORDER BY field1
Ordenar por en diferentes columnas
Aquí es donde realmente se vuelve complicado. Usando SQL 2012, probé la publicación superior y no funciona.
SELECT * FROM
(
SELECT table1.field1 FROM table1 ORDER BY table1.field1
) DUMMY_ALIAS1
UNION ALL
SELECT * FROM
(
SELECT table2.field1 FROM table2 ORDER BY table2.field1
) DUMMY_ALIAS2
Siguiendo la recomendación en el comentario probé esto
SELECT * FROM
(
SELECT TOP 100 PERCENT table1.field1 FROM table1 ORDER BY table1.field1
) DUMMY_ALIAS1
UNION ALL
SELECT * FROM
(
SELECT TOP 100 PERCENT table2.field1 FROM table2 ORDER BY table2.field1
) DUMMY_ALIAS2
Este código se compiló pero el DUMMY_ALIAS1
y DUMMY_ALIAS2
anuló lo Order By
establecido en la Select
declaración que lo hace inutilizable.
La única solución que se me ocurrió, que funcionó para mí, fue no usar un sindicato y, en cambio, hacer que las consultas se ejecutaran individualmente y luego tratar con ellas. Básicamente, no usar un Union
cuando quierasOrder By