Announcement

Collapse
No announcement yet.

where bedingung nicht vorhanden dann weitere where bedingung (Wasserfall)

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

  • where bedingung nicht vorhanden dann weitere where bedingung (Wasserfall)

    Hallo zusammen!

    ich habe ein kleins sql-problem und hoffe, das ihr mir helfen könnt.
    Das vorhandene SQL-Statement sieht so aus:

    select*

    from
    abc.Tabelle

    where
    Eigenschaft1 = 'UE1'

    Möglicher Inhalt Eigenschaft1: UE1, UE2, UE3

    Auszug der Tabelle ohne Where-KLausel:
    Name Eigenschaft1 Wert
    Müller UE1 234
    Müller UE2 2234
    Müller UE3 534
    Maier UE2 275
    Maier UE3 12
    SchmidtUE1 298
    SchmidtUE3 55

    Greift die Where Klausel oben dann, sieht die Ausgabe so aus:
    Name Eigenschaft1 Wert
    Müller UE1 234
    SchmidtUE1 298

    Es fehlt der Name Maier.
    Kann ich die where klausel so umstellen, das es eine art wasserfall-effekt ist? d.h.
    wenn die eigenschaft1 nciht vorhanden ist für einen bestimmten datensatz, dann nehme die nächste Eigenschaft1 und zeige es an. Die Tabelle würde dann so aussehen:

    Name Eigenschaft1 Wert
    Müller UE1 234
    Maier UE2 275
    SchmidtUE1 298

    hoffe ihr könnt mir helfen!!

    danke!!

  • #2
    Was ist die Definition von 'die nächste Eigenschaft1'? Alphabetisch?

    Dann könntest du einfach per min Aggregatfunktion die kleinste vorhandene Eigenschaft je Name ermitteln.

    [Highlight=SQL]select Name, min(Eigenschaft1)
    from Tabelle
    group by Name[/Highlight]

    Um dann noch den Wert der Eigenschaft zu bekommen müsstets du dann wieder mit der Tabelle joinen.

    Z.B.
    [Highlight=SQL]
    with minEigenschaft(Name, Eigenschaft1) as
    (
    select Name, min(Eigenschaft1)
    from Tabelle
    group by Name
    )

    Select a.*
    from Tabelle a
    inner join minEigenschaft b on a.Name = b.Name and a.Eigenschaft1 = b.Eigenschaft1[/Highlight]

    Comment


    • #3
      danke für die schnelle antwort! aber die definition von "nächste eigenschaft! ist nicht alphabethisch! Die Rangfolge ist fest vorgegeben:
      1. UE1
      2. UE3
      3. UE2

      hoffe ihr könnt mir dennoch weiterhlefen! DANKE

      Comment


      • #4
        Alternativ kannst Du mit isNull einfach den gewünschten Wert wählen, hierbei könntest Du direkt der fest vorgegeben "Sortierung" folgen.
        Dürfte bei großen Tabellen evtl auch performanter sein, als Gruppierung.
        Gruß, defo

        Comment

        Working...
        X