Announcement

Collapse
No announcement yet.

SQL mit distinct, min und max

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

  • SQL mit distinct, min und max

    Hallo liebe Member,

    ich habe da ein (Oracle)SQL-Abfrageproblem, dass ich aber mit meinen Kenntnissen nicht gelöst bekomme.

    Folgende Tabelle (vereinfacht dargestellt):

    Von bis Art Fall
    01.01.08 30.04.2010 A 55111
    01.08.09 31.07.2010 A 55111
    01.01.09 31.03.2010 A 55111
    01.01.08 31.12.2010 B 55111

    Ich möchte nun eindeutige Ergebnisse in Bezug auf die Art haben. D.h. also
    A 55111
    B 55111

    Jetzt soll mir aber auch noch der minimalste "Von"-Wert und der maximalste "Bis"-Wert ausgegeben werden.

    Also so
    01.01.08 31.07.2010 A 55111
    01.01.08 31.12.2010 B 55111

    Angenommen die Tabelle würde Buchdaten heißen, habe ich sowas probiert:
    select
    distinct(buchdaten.fall),
    min(buchdaten.von),
    max(buchdaten.bis),
    buchdaten.art
    from
    buchdaten
    where
    buchdaten.bis >= '31.12.2009' or buchdaten.bis is NULL
    group by
    buchdaten.fall,
    buchdaten.von,
    buchdaten.bis,
    buchdaten.art

    Ich kriege so aber immer nur alle vier Zeilen, anstatt nur zwei Zeilen mit dem minimalen und maximalen Wert. Ich bin mir nicht sicher, ob das überhaupt geht, was ich mir da vorstelle

    Gibt es vielleicht noch einen anderen Ansatz, außer mit distinct?!?

    Hinweis:
    Es kann vorkommen, dass der "Bis"-Wert ein u.U. auch leer ist.

    Für jeden Tipp bin ich euch über alles dankbar.

    Liebe Grüße
    Marianne

  • #2
    wie währe denn dieser select
    SELECT buchdaten.fall
    ,buchdaten.art
    ,MIN(buchdaten.von)
    ,MAX(nvl(buchdaten.bis, SYSDATE))
    FROM buchdaten
    WHERE nvl(buchdaten.bis, SYSDATE) >= '31.12.2009'
    GROUP BY buchdaten.fall
    ,buchdaten.art

    Comment

    Working...
    X