Announcement

Collapse
No announcement yet.

DB2 Fehler SQLSTATE-Wert "42601" bei GROUP BY?

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

  • DB2 Fehler SQLSTATE-Wert "42601" bei GROUP BY?

    Hallo zusammen bin am verzweifeln ahbe folgenden select:

    Code:
    SELECT * FROM 
    (SELECT DSBL_FIN, DSBL_MILEAGE_IND, MIN(DSBL_SERVICE_DATE) as MIN_SERVICE_DATE, MIN(DSBL_MILEAGE) as MIN_MILEAGE
    FROM V3GRDSBL
    WHERE 
    SUBSTR(DSBL_FIN,1,3) = '245'
    AND DSBL_SERVICE_KIND = '1'
    AND DSBL_MILEAGE IS NOT null
    GROUP BY DSBL_FIN, DSBL_MILEAGE_IND) as T1
    inner join V3GRDSBL as T2
    ON T1.DSBL_FIN = T2.DSBL_FIN 
    AND T1.MIN_MILEAGE < T2.DSBL_MILEAGE) as newTable;
    hier bekomme ich die Fehlermeldung:
    Auf "T1.MIN_MILEAGE < T2." folgte das unerwartete Token "DSBL_MILEAGE". Zu den möglichen Token gehören: "<interval_qualifier>".
    [SQL State: 42601]
    Während der implizierten Systemaktion "2" ist ein Fehler aufgetreten. Die Fehlerinformationen enthalten SQLCODE-Wert "-104", SQLSTATE-Wert "42601" sowie die Nachrichtentokens "DSBL_MILEAGE|T1.MIN_MILEAGE < T2.|<interval_qualifier>".
    [SQL State: 42601]

    Das ergebnis des inneren Selects ist:
    Code:
    SELECT DSBL_FIN, DSBL_MILEAGE_IND, MIN(DSBL_SERVICE_DATE) as MIN_SERVICE_DATE, MIN(DSBL_MILEAGE) as MIN_MILEAGE
    FROM V3GRDSBL
    WHERE 
    SUBSTR(DSBL_FIN,1,3) = '245'
    AND DSBL_SERVICE_KIND = '1'
    AND DSBL_MILEAGE IS NOT null
    GROUP BY DSBL_FIN, DSBL_MILEAGE_IND
    Result:
    2452071J409049;0;2009-06-13;40000;
    2452071J409049;1;2008-06-11;20000;
    2452071J409224;0;2008-09-07;15000;
    2452071J409224;1;2009-07-10;45000;

    Eigentlich möchte ich aus diesem Result nur die mit der kleinesten Laufleistung also nur diese beiden Einträge:
    2452071J409049;1;2008-06-11;20000;
    2452071J409224;0;2008-09-07;15000;

    Kann mir mit diesem Problem jemand helfen?

    Vielen Dank und viele Grüße
    Marco

  • #2
    Hallo Marco,

    zur Fehlermeldung: Wenn Du das Sql mal "hübsch formatierst, sieht man es eigentlich gleich.
    [highlight=SQL]SELECT *
    FROM (SELECT DSBL_FIN, DSBL_MILEAGE_IND, MIN(DSBL_SERVICE_DATE) as MIN_SERVICE_DATE, MIN(DSBL_MILEAGE) as MIN_MILEAGE
    FROM V3GRDSBL
    WHERE SUBSTR(DSBL_FIN,1,3) = '245'
    AND DSBL_SERVICE_KIND = '1'
    AND DSBL_MILEAGE IS NOT null
    GROUP BY DSBL_FIN, DSBL_MILEAGE_IND
    ) AS T1
    INNER JOIN V3GRDSBL as T2
    ON T1.DSBL_FIN = T2.DSBL_FIN
    AND T1.MIN_MILEAGE < T2.DSBL_MILEAGE
    ) as newTable;[/highlight]
    Was schließt den ") as newTable;"?
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Mhh ok Klammert fehlt Problem auch wenn ich die Klammer anders setzte bzw die vor "AS T1) entferne bekomme ich immer noch dieselbe Fehlermeldung.

      Noch ne Idee wie ich den Select umstellen könnte, damit er funktioniert ;-)

      Comment


      • #4
        ich die Klammer anders setzte bzw die vor "AS T1)
        Statt rumzuraten, wo einen neue Klammer hinpassen könnte, beantworte lieber die Fragen: Was schließt die Klammer? Nichts, also weg damit.
        [highlight=SQL]SELECT *
        FROM (SELECT DSBL_FIN, DSBL_MILEAGE_IND, MIN(DSBL_SERVICE_DATE) as MIN_SERVICE_DATE, MIN(DSBL_MILEAGE) as MIN_MILEAGE
        FROM V3GRDSBL
        WHERE SUBSTR(DSBL_FIN,1,3) = '245'
        AND DSBL_SERVICE_KIND = '1'
        AND DSBL_MILEAGE IS NOT null
        GROUP BY DSBL_FIN, DSBL_MILEAGE_IND
        ) AS T1
        INNER JOIN V3GRDSBL as T2
        ON T1.DSBL_FIN = T2.DSBL_FIN
        AND T1.MIN_MILEAGE < T2.DSBL_MILEAGE[/highlight]
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Klappt viele dank
          Gruß Marco

          Comment

          Working...
          X