2015-12-17 41 views
0
SELECT 
    a, 
    b, 
    c, 
    ROW_NUMBER() OVER (ORDER BY a) ROWNUM, 
    ROW_NUMBER() OVER (ORDER BY a) % 2 BOOL 
FROM love 
--WHERE BOOL = 1 

我想獲取奇數/偶數行而不使用外部查詢。即使奇數行沒有使用外部查詢

在同一個查詢中使用生成的列將不起作用,但有沒有辦法實現?

+0

好吧,太糟糕了。包裝查詢*是解決方案。爲什麼這是你的問題? – Luaan

+1

您當前使用的方法有什麼問題? – Siyual

+0

沒有錯。只是想知道是否有另一種我不知道的方式。感謝您的信息,我已經在考慮刪除這個問題。 – Sharktooth

回答

2

馬丁的回答是這樣的:

SELECT TOP (1) WITH TIES a, b, c, 
     ROW_NUMBER() OVER (ORDER BY a) as ROWNUM, 
     ROW_NUMBER() OVER (ORDER BY a) % 2 as BOOL 
FROM love 
ORDER BY BOOL DESC; 

這是非常聰明的,我充分歸屬馬丁。

我會注意到,爲了保證正確性,這裏假定a是唯一的。 SQL(和SQL Server)排序不穩定。所以,如果有重複值,那麼對於rownumbool,排序可能會不同。

相關問題