Announcement

Collapse
No announcement yet.

Rowid = n plus jede x-te Zeile

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rowid = n plus jede x-te Zeile

    Hallo,

    habe folgendes Problem:

    Ich brauche eine bestimmte Zeile + jede z.B.
    siebte Zeile.

    Ich bräuchte eine perfomante SQL-Konstruktion für MS SQL Server und Oracle.

    Zur Zeit liste ich alle Id`s auf, z.B.
    select * from foo where rowid in (1, 8, 15, ..). Dies ist aber zu langsam bei mehr als 100 rowid's.

    Hat jemand eine bessere Lösung. Danke

    Sladjo

  • #2
    Hallo,

    man könnte folgendes machen: <br>
    1. Durchnummerierte Ergebnismenge in eine temporäre Hilfstabelle kopieren <br>
    2. Modulo-Berechnung geteilt durch 7 prüft auf 0
    <pre>
    <b>SELECT</b>
    <b>IDENTITY</b>(<b>INT</b>,1,1) <b>AS</b> RowNumber, *
    <b>INTO</b>
    #TmpCustomerTbl
    <b>FROM</b>
    Customers
    <b>GO</b>
    <br>
    <b>SELECT</b>
    RowNumber,CustomerID
    <b>FROM</b>
    #TmpCustomerTbl
    <b>WHERE</b>
    (RowNumber % 7) = 0
    </pre>
    Als Ergebnis erhält man dann:
    <pre>
    RowNumber CustomerID
    ----------- ----------
    7 BLONP
    14 CHOPS
    21 FAMIA
    28 FURIB
    35 HILAA
    42 LAUGB
    49 MAGAA
    56 OTTIK
    63 QUICK
    70 SANTG
    77 THEBI
    84 VICTE
    91 WOLZA
    <br>
    (13 row(s) affected)
    </pre&gt

    Comment

    Working...
    X