2013-05-08 23 views
2

我在Union all處收到語法錯誤。我知道我不能這樣做。但有人可以幫我解決問題嗎?對'ORDER BY'查詢執行'UNION'

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 

回答

1

取下每UNION所有ORDER BY小號除了最後一個,並確保你在引用的列名ORDER BY對應於第一個SELECT

+0

但我需要在執行聯合之前按順序執行每個查詢 – BumbleBee 2013-05-08 21:52:33

+0

您在每個「SELECT」的排名函數中都有順序,所以沒問題。如果你想把所有的東西都排在一起,在'聯盟'之後,說出來,我會給你一個新的答案。 – 2013-05-08 21:58:46

1

凡事總有一個Order by上非常最後選擇的UNIONUNION 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 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 
+0

但我需要做的順序爲每個查詢之前perforation工會 – BumbleBee 2013-05-08 21:52:58

+0

@BumbleBee - 爲什麼? 'UNION'不關心記錄在什麼順序... – EkoostikMartin 2013-05-08 21:54:09

+0

@BumbleBee。即使您一次訂購,它也會在'ORDER'中給出結果。 – Luv 2013-05-08 22:00:48