Monday, 2 June 2014

How to display odd or even number rows


SQL SERVER
odd :
select * from( 
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 DESC) AS 'RowNumber', 
FROM table1
) d where (RowNumber % 2) = 1 
even :
select * from( 
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 DESC) AS 'RowNumber', 
FROM table1
) d where (RowNumber % 2) = 0
CTE
WITH r_set AS (
 SELECT *, ROW_NUMBER() OVER(ORDER BY CustomerID) AS rn FROM Sales.Customer
)
SELECT * FROM r_set WHERE rn % 2 = 0

Assuming your table has auto-numbered field "RowID" and you want to select only records where RowID is even or odd.
To show odd:
Select * from MEN where (RowID % 2) = 1
To show even:
Select * from MEN where (RowID % 2) = 0
ORACLE
select * from emp where (rowid,0) in (select rowid, mod(rownum,2) from emp) Output:- 2 4 6
Select * from emp where (rowid,1) in (select rowid, mod(rownum,2) from emp); Output: 1,3,5..

No comments:

Post a Comment