after - ¿Cómo usar order by with union all in sql?
union all select sql server (4)
No es una respuesta directa de OP, pero pensé que iba a responder aquí al mensaje ERROR del OP, ¡lo que podría apuntar en otra dirección completamente!
Todas estas respuestas se refieren a una ORDEN GENERAL POR una vez que se ha recuperado el conjunto de registros y se ordena el lote.
¿Qué sucede si usted quiere HACER UN PEDIDO por cada porción de la UNIÓN de manera independiente, y aun así tenerlos "unidos" en el mismo SELECCIONAR?
SELECT pass1.* FROM
(SELECT TOP 1000 tblA.ID, tblA.CustomerName
FROM TABLE_A AS tblA ORDER BY 2) AS pass1
UNION ALL
SELECT pass2.* FROM
(SELECT TOP 1000 tblB.ID, tblB.CustomerName
FROM TABLE_B AS tblB ORDER BY 2) AS pass2
Tenga en cuenta que TOP 1000 es un número arbitrario. Use un número lo suficientemente grande para capturar todos los datos que necesita.
Intenté la consulta sql dada a continuación:
SELECT * FROM (SELECT *
FROM TABLE_A ORDER BY COLUMN_1)DUMMY_TABLE
UNION ALL
SELECT * FROM TABLE_B
Resulta en el siguiente error:
La cláusula ORDER BY no es válida en vistas, funciones en línea, tablas derivadas, subconsultas y expresiones de tablas comunes, a menos que también se especifique TOP o FOR XML.
Necesito usar el orden en union todo. ¿Cómo logro esto?
Realmente no necesitas tener paréntesis. Puede ordenar directamente:
SELECT *, 1 AS RN FROM TABLE_A
UNION ALL
SELECT *, 2 AS RN FROM TABLE_B
ORDER BY RN, COLUMN_1
SELECT *
FROM
(
SELECT * FROM TABLE_A
UNION ALL
SELECT * FROM TABLE_B
) dum
-- ORDER BY .....
pero si desea tener todos los registros de la Table_A
en la parte superior de la lista de resultados, puede agregar el valor definido por el usuario que puede usar para ordenar,
SELECT *
FROM
(
SELECT *, 1 sortby FROM TABLE_A
UNION ALL
SELECT *, 2 sortby FROM TABLE_B
) dum
ORDER BY sortby
Select ''Shambhu'' as ShambhuNewsFeed,Note as [News Fedd],NotificationId
from Notification with(nolock) where DesignationId=@Designation
Union All
Select ''Shambhu'' as ShambhuNewsFeed,Note as [Notification],NotificationId
from Notification with(nolock)
where DesignationId=@Designation
order by NotificationId desc