Announcement

Collapse
No announcement yet.

RANG IN Zeilen

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

  • RANG IN Zeilen

    Hallo,

    Für eine Sprunglaufauswertung habe ich 5 Zahlen nebeneinander, bei denen ich feststellen muss, welche die zweit bis viertgrösste ist.

    Spalten: A B C D E
    4,5 4,0 2,5 3,5 5,0



    Ergebnis des selects:
    C D E
    3,5 4,0 4,5


    bei teils gleichenErgebnissen:
    A B C D E
    3,5 3,5 4,0 5,0 5,0


    C D E
    3,5 4,0 5,0

    ==> also immer der kleinste bzw. 1 kleinster und der größte bzw. 1 größter fliegen raus.

    kann man so einen select mit wenig text lösen?

  • #2
    Hallo!

    Wenn es reines SQL sein soll wird das spannend, mit immer wieder wechselnden Strukturen der Antworttabelle.
    Mal die Spalten ABC dann CBE usw.. die Antwort wird wohl nicht besonders verwertbar sein...

    Wenn Du die Struktur der DB ändern kannst/darfst wäre dies ein Ansatz:
    Struktur und Daten aufbauen
    create table tempdb.dbo.sprunglauf (id int, sprunglauf int, wertung varchar(1), Wert numeric (2,1))
    insert into tempdb.dbo.sprunglauf values ( 1, 1, 'A', 4.5 )
    insert into tempdb.dbo.sprunglauf values ( 2, 1, 'B', 4.0 )
    insert into tempdb.dbo.sprunglauf values ( 3, 1, 'C', 2.5 )
    insert into tempdb.dbo.sprunglauf values ( 4, 1, 'D', 3.5 )
    insert into tempdb.dbo.sprunglauf values ( 5, 1, 'E', 5.0 )

    insert into tempdb.dbo.sprunglauf values ( 6, 2, 'A', 3.5 )
    insert into tempdb.dbo.sprunglauf values ( 7, 2, 'B', 3.5 )
    insert into tempdb.dbo.sprunglauf values ( 8, 2, 'C', 4.0 )
    insert into tempdb.dbo.sprunglauf values ( 9, 2, 'D', 5.0 )
    insert into tempdb.dbo.sprunglauf values ( 10, 2, 'E', 5.0 )

    Abfrage:
    select top 3 * from tempdb.dbo.sprunglauf
    where sprunglauf = 2
    and id <> (
    select min(id) from tempdb.dbo.sprunglauf where sprunglauf = 2
    and wert = (select min(wert) from tempdb.dbo.sprunglauf where sprunglauf = 2)
    )
    order by wert

    Auf diese Weise ist die Antwort in Ihrer Struktur immer gleich und kann vernünftig weiterverarbeitet werden.

    Eine Alternative wäre eine Strored Procedure, die Dir als Result immer nur die drei Werte ohne ABC... zurückgibt. Sorry aber da fehlt mir für einen konkreten Vorschlag momentan die Zeit.

    BYE BERND
    PS: Wenn Du eine andere Lösung findest poste Sie bitte...

    Comment

    Working...
    X