Announcement

Collapse
No announcement yet.

Wert aus Datensatz mit höchstem Jahr

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

  • Wert aus Datensatz mit höchstem Jahr

    Hallo,<BR><BR>
    kann man einen Select bauen, der aus den Daten folgendes liefert:<BR><BR>
    Kunde Jahr OP<BR>
    1000 2001 1000<BR>
    1000 2002 1100<BR>
    1000 2003 1500<BR>
    1001 2002 2000<BR>
    1001 2003 1500<BR>
    1001 2004 4000<BR><BR>
    Es soll pro Kunde der OP aus dem Datensatz mit dem höchsten Jahr herauskommen, also:<BR><BR>
    Kunde Jahr OP<BR>
    1000 2003 1500<BR>
    1001 2004 4000<BR><BR>
    Frank

  • #2
    Viele Wege führen nach Rom.
    Diese bleibt auch bei mehr Kunden bestehen.

    select * from 'Tabellenname'<BR>
    where OP in (select MAX(OP) from 'Tabellenname' group by Kunde);

    Gruß

    Marku

    Comment


    • #3
      select FELDKUNDENNR, max(FELDJAHR) JAHR, FELDOP<BR>
      from TABLE<BR>
      group by FELDKUNDENNR, FELDOP<BR>
      <BR>
      group by gruppiert nach den feldern<BR>
      <BR>
      und max zieht das höchste Jahr<BR>
      !!! der Datentyp des Jahr muss aber number sein, sonst noch max(to_number(FELDJAHR)) !!!<BR>
      <BR>
      MfG Ral

      Comment


      • #4
        hallo frank,

        ich bin neu hier, also kommt die antwort ein wenig spät.

        leider haben die kollegen mit ihren antworten daneben getroffen, was du sicher schon bemerkt haben wirst. die gestellte frage ist so ziemlich die häufigste frage wenn's um sql geht.

        eine lösung ist ein self join nach diesem muster:

        <pre>
        select a.*
        from test a,
        ( select kunde, max(jahr) jahr
        from test
        group by kunde
        ) b
        where a.kunde = b.kunde and a.jahr = b.jahr
        </pre>

        oder auch so:

        <pre>
        select a.*
        from test a
        where jahr = ( select max(jahr)
        from test b
        where a.kunde = b.kunde
        )
        </pre>

        die ausführungspläne sind ein wenig unterschiedlich, also wegen der performance mal mit beiden versuchen. ein index auf kunde oder kunde,jahr kann auf keinen fall hier schaden.

        gruss volke

        Comment

        Working...
        X