Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 对带有“ORDER BY”的查询执行“UNION”_Sql Server - Fatal编程技术网

Sql server 对带有“ORDER BY”的查询执行“UNION”

Sql server 对带有“ORDER BY”的查询执行“UNION”,sql-server,Sql Server,我得到了一个语法错误在工会所有。我知道我不能这么做。有人能帮我吗 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)

我得到了一个语法错误在工会所有。我知道我不能这么做。有人能帮我吗

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和UNION ALL时,应始终有一个订单


从每个联合中删除除最后一个外的所有ORDER BY,并确保ORDER BY中引用的列名与第一个SELECT相对应。

但在执行联合之前,我需要为每个查询执行ORDER BY。您在每个SELECT的排名函数中都有ORDER BY,这样就可以了。如果你想在联合后对所有问题进行排序,那么说出来,我会给你一个新的答案。但是在执行查询之前,我需要对每个查询进行排序union@BumbleBee. 即使您按一次排序,它也会按顺序给出结果。所以我假设最后的order by不会给出正确的RN1。您也不能将order by放入子查询中。无论此查询结果的顺序如何,您将始终至少有两行,其中RN=1。
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 Remove order by from here

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 with(nolock)
WHERE [status_date] <=   CONVERT(DATE,DATEADD(MONTH, -6, GETDATE()))
AND 
ID in (SELECT txt FROM [dbo].[fn_ListToTable](@listStr, ',')) 
)AS A
ORDER BY date1 DESC, date2 DESC