我在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/