22 Stimmen

Wie kann man in Sql Server 2008 nur gerade oder ungerade Zeilen anzeigen?

Ich habe eine Tabelle MEN in Sql Server 2008, die 150 Zeilen enthält.

Wie kann ich nur die geraden oder nur die ungeraden Zeilen anzeigen?

30voto

Matthew Whited Punkte 21770

Überprüfen Sie 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

14voto

z-boss Punkte 15891

Angenommen, Ihre Tabelle hat das automatisch nummerierte Feld "RowID" und Sie möchten nur Datensätze auswählen, bei denen RowID gerade oder ungerade ist.

Ungewöhnlich zu zeigen:

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

Gleichmäßig zu zeigen:

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

5voto

Juan Marco Punkte 636

FASTER: Bitweise anstelle von Modulus.

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

Zufällige Frage: Verwenden Sie eigentlich Tabellennamen in Großbuchstaben? Normalerweise sind Großbuchstaben für Schlüsselwörter reserviert. (Nach Konvention)

5voto

Rahul Punkte 51

Abfrage ungerader Zahlen:

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

gerade Zahlen abfragen:

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

4voto

Gowtham Punkte 41

Für sogar Werte aufzeichnen:

select * from www where mod(salary,2)=0;

Für ungerade Werte aufzeichnen:

select * from www where mod(salary,2)!=0;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X