2010-06-08 21 views

cevap

17

önceden

teşekkür Çeki dışarı ROW_NUMBER()

SELECT t.First, t.Last 
FROM (
    SELECT *, Row_Number() OVER(ORDER BY First, Last) AS RowNumber 
      --Row_Number() starts with 1 
    FROM Table1 
) t 
WHERE t.RowNumber % 2 = 0 --Even 
--WHERE t.RowNumber % 2 = 1 --Odd 
+0

Evet, bunu yayınlamadan önce bir sorgu oluşturma şansım olmadı ... ama cevabımı uzattım. –

11

tablonuzu varsayarsak "rowID" Otomatik numaralandırılmış alanı vardır ve ROWID çift veya tek nerede olduğunu sadece kayıtları seçmek istiyor.

garip göstermek için:

Select * from MEN where (RowID % 2) = 1 

bile göstermek için:

Select * from MEN where (RowID % 2) = 0 
+4

YOu hiçbir zaman boşluk bırakamaz! Kayıtlar silinecek ve işlemler geri çekilecek. – HLGEM

+0

Asla asla deme. Bazen yapabilirsin. Örneğin, statik bir tanım tablonuz varsa. Ama soru bir şey varsaymak için net değil, bu yüzden haklısınız. –

2

bu deneyin:

küsur: hatta

select * from( 
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 DESC) AS 'RowNumber', 
FROM table1 
) d where (RowNumber % 2) = 1 

:

Ardından
select * from( 
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 DESC) AS 'RowNumber', 
FROM table1 
) d where (RowNumber % 2) = 0 
1
SELECT * 
    FROM 
    ( 
    SELECT rownum rn, empno, ename 
    FROM emp 
) temp 
    WHERE MOD(temp.rn,2) = 1 
0
select * from Tablename 
where id%2=0 
0

çift sayı :: seçin * MEN alma için olduğu Men_ID% 2 = 0; Takip

MEN tek sayı :: Seç * alma için nerede Men_ID% 2 = 0!;

İşte MEN sizin tablo_ismi Men_ID MEN Tablo sütun olmasıdır.

3
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY sal DESC) row_number, sr,sal FROM empsal) a WHERE (row_number%2) = 1 

ve hatta için

 SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY sal DESC) row_number, sr,sal FROM empsal) a WHERE (row_number%2) = 0 
2

kayıt değerleri:

seçme * www mod (maaş, 2) = 0; garip değerler Kayıt için

:

select * www nerede mod (maaş, 2) = 0;

3

FASTER: Modül yerine bitsel.

select * from MEN where (id&1)=0; 

Rasgele soru: Büyük harfli tablo adlarını kullanıyor musunuz? Genellikle büyük harf anahtar kelimeler için ayrılmıştır. (Geleneksel olarak)

3

tek sayı sorgusu:

SELECT * 
    FROM (SELECT rownum rn, empno, ename 
      FROM emp 
     ) temp 
    WHERE MOD(temp.rn,2) = 1 

çift sayı sorgusu:

SELECT * 
    FROM (SELECT rownum rn, empno, ename 
      FROM emp 
     ) temp 
    WHERE MOD(temp.rn,3) = 0 
İlgili konular