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 :(得分:2)
Martin的回答如下:
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)中的排序不稳定。因此,如果存在重复值,则rownum
和bool
的排序可能会有所不同。