none
Select auf Record where Wert zwischen 2 Bereichen RRS feed

  • Frage

  • Hallo,

    ich habe folgendes Problem:

    create table Test(
    name varchar(200),
    code varchar(200),
    maxWeight int
    )

    insert into Test (name, code, Weight) Values ('Artikel','A_100',100)
    insert into Test (name, code, Weight) Values ('Artikel','A_150',150)
    insert into Test (name, code, Weight) Values ('Artikel','A_200',200)
    insert into Test (name, code, Weight) Values ('Artikel','A_300',300)

    Jetzt möchte ich den Record selektieren, auf den z.Bsp. das Gewicht 210 entfallen würde (-> 300).Wie muss der Query aussehen, damit ich immer den passenden Maximalwert erhalte?

    Für Eure Tipps dankend!,

    Klaus


    No Brain - No Pain

    Montag, 8. Dezember 2014 13:01

Antworten

  • Hallo Klaus, das könnte man über eine CTE mit Window Function lösen:

    With Vorselektion
    as
    (
    Select name, code, maxWeight, ROW_NUMBER() OVER( ORDER BY maxWeight desc) as
    RN
    from test
    where maxWeight > 210
    )
    Select *
    from Vorselektion
    where RN = 1
    ;

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu

    • Als Antwort markiert Klaus Mayer Montag, 8. Dezember 2014 14:05
    Montag, 8. Dezember 2014 13:45

Alle Antworten

  • Hallo Klaus, das könnte man über eine CTE mit Window Function lösen:

    With Vorselektion
    as
    (
    Select name, code, maxWeight, ROW_NUMBER() OVER( ORDER BY maxWeight desc) as
    RN
    from test
    where maxWeight > 210
    )
    Select *
    from Vorselektion
    where RN = 1
    ;

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu

    • Als Antwort markiert Klaus Mayer Montag, 8. Dezember 2014 14:05
    Montag, 8. Dezember 2014 13:45
  • Hallo Christoph,

    mit

    ORDER BY maxWeight asc

    klappt das prima. Danke Dir!

    Schöne Grüße,

    Klaus


    No Brain - No Pain



    • Bearbeitet Klaus Mayer Montag, 8. Dezember 2014 14:04
    Montag, 8. Dezember 2014 14:03