sql-server - 对 'UNION' 的查询执行 'ORDER BY'

标签 sql-server

我在Union all 中遇到语法错误。我知道我做不到这一点。但是有人可以帮我吗?

SELECT
ID, 
date1, 
date2 row_number() OVER (PARTITION BY ID ORDER BY date1 DESC )  as RN1, 
1 as Range
FROM 
(
SELECT ID,date1,
rn = row_number() OVER (PARTITION BY ID ORDER BY date1 )
FROM listing_History   (nolock)
WHERE [date1] <=   CONVERT(DATE,DATEADD(MONTH, -6, GETDATE()))  AND 
ID in (SELECT txt FROM [dbo].[fn_ListToTable](@listStr, ',')) 
)  AS A ORDER BY date1 DESC, date2 DESC

UNION ALL 

SELECT
ID, 
Date1, 
date2 row_number() OVER (PARTITION BY ID ORDER BY date1 DESC )  as RN1, 
1 as Range
FROM 
(
SELECT 
ID,
date1,
rn = row_number() OVER (PARTITION BY ID ORDER BY date1 )
FROM listing_History   (nolock)
WHERE [status_date] <=   CONVERT(DATE,DATEADD(MONTH, -3, GETDATE()) -1)
AND 
ID in (SELECT txt FROM [dbo].[fn_ListToTable](@listStr, ',')) 
) AS A ORDER BY date1 DESC,date2 desc

最佳答案

删除除最后一个之外的每个 UNION 中的所有 ORDER BY,并确保您在 ORDER BY 中引用的列名称对应于第一个SELECT

关于sql-server - 对 'UNION' 的查询执行 'ORDER BY',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16450754/

相关文章:

Python 连接到具有不同 SQL 方言的多个服务器?

sql-server - SQL - 根据时间戳记录查找结束日期和开始日期

sql 合并可能具有空值的两列

sql-server - 获取数据库中所有表的大小

c# - 如何使 linq to entities 或 dbcontext 在插入语句中使用输出?

使用分组依据和按日期排序的 SQL 选择

sql - SQL Server sysschedules 间隔是如何计算的?

sql-server - 在经典ASP页面调用存储过程

sql - 根据最大id连接表

sql - 与不是主键的标识列的关系