Announcement

Collapse
No announcement yet.

SQL - Brett vorm Kopf oder geht´s nicht ?

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

  • SQL - Brett vorm Kopf oder geht´s nicht ?

    Hallo Forum,

    ich verzweilfele mal wieder!

    Ich versuche über einen SQL String aus einer Tabelle zwei Werte zu erhalten.

    In einem der Felder (MONJA) steht der Monat "2004.10", in einem anderen eine Float Wert (SALDO).

    Ich möchte nun die beiden selekitieren und dabei nach dem höchsten Monat abfragen und den dazugehörigen Wert Saldo ermitteln.

    mit:
    select max(MONJA) from Kassemon
    where bla bla ....
    bekomme ich den gewünschten Wert, aber nicht den dazugehörigen zweiten Wert!!!!

    was ich bräuchte wäre:

    select max(MONJA) as xyz, saldo from Kassemon
    where bla bla...

    ... einigermassen verständlich ausgedrückt ???

    Benutzen tue ich den ADS Server von Extended Systems!

    Jeder Tipp ist willkommen

    Heiko

  • #2
    Hi Heiko,<br>
    select max(monia), saldo from TABELLE<br>Michae

    Comment


    • #3
      ... das habe ich auch gedacht! Funktioniert aber leider nicht! Dabei bekomme ich folgende Fehlermeldung:

      "Column not found in GROUP BY clause: saldo in SELECT or HAVING clause.&quot

      Comment


      • #4
        Hi,<br>hänge doch "group by saldo" hinten dran :-)<br>Michae

        Comment


        • #5
          Das wird nicht funktionieren dann bekommt er ja sein max MONJA für jeden SALDO.

          Wenn deine DB einigermaßen ANSI SQL unterstützt sollte folgendes gehen.

          select MONJA, saldo
          from Kassemon
          where MONJA >= ANY (Select MONJA from Kassemon)

          Wenn MONJA nicht eindeutig ist (mehre Saldi je MONJA) kannst du ja jetzt noch den SALDO summieren.

          select MONJA, sum(saldo) from Kassemon
          where MONJA >= ANY (Select MONJA from Kassemon)
          group by MONJA

          Gruß Ral

          Comment


          • #6
            ;o))
            Das kann schonmal irritieren, wenn du aber max nutzt, musst du gruppieren und für alle felder aggregatfunktionen nutzen.

            Wenn Du den Ads aufhängen möchtest (grade wieder eine neue Möglichkeit gefunden) dann versuche<pre>
            select monia, saldo from TABELLE
            where monia = max(monia)
            </pre> war halt ein freudscher verschreiber. Möchtest du Dein Ergebnis nimm dies:<pre>
            select monia, saldo from TABELLE
            where monia = select max(monia) from TABELL

            Comment


            • #7
              Ja, bei der rumspielerei habe ich den ADS auch öfters zum abpfeifen gebracht ;-)

              aber dein String bringt auch kein Ergebnis :-(

              Heik

              Comment


              • #8
                select monja, saldo from kassemon
                where monja = (select max(monja) from kassemon)<BR>vielleicht ??? <BR>Fran

                Comment


                • #9
                  ... Danke für die vielen Vorschläge! Ich hab es zwischenzeitlich folgendermassen gelöst:

                  SELECT k.MONJA as letzterMonat, k.saldo FROM Kassemon k
                  WHERE (k.MONJA = (SELECT max (k2.MONJA) FROM Kassemon k2))

                  ... der ADS SQL Parser hat eben doch noch einiges nachzuholen.

                  @Frank: Dein SQL String bringt allerdings auch ein korrektes Ergebnis.

                  Heik

                  Comment

                  Working...
                  X