[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2019
    Beiträge
    53

    SQL Syntax Fehler

    Hallo Forum,
    ich habe folgenden SQL - Code und bekomme leider eine Fehlermeldung. SQL0104 Token ungültig wird mir angezeigt. Ich sehe persönlich nicht an welcher Stelle ein Syntax - Fehler vorhanden ist.
    Code:
    Erledigt

  2. #2
    Registriert seit
    Nov 2004
    Beiträge
    325
    Moin,

    ich glaube hinter Menge ist das Komma zuvile.

    mfg

    DKSPROFI

  3. #3
    Registriert seit
    Aug 2019
    Beiträge
    53
    Moin,

    also wenn ich das Komma bei Menge entferne markiert er mir die darauffolgende Klammer als Fehler.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das Komma trennt den skalaren Subselect.
    Allerdings fehlt bei Aggregaten das Group By und nach der Klammer der finale "select * from temp_result ".
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Nov 2020
    Beiträge
    331
    Du machst ein With temp_result as (...) greifst aber nicht auf temp_result zu.
    Das könnte dann so aussehen:

    with temp_result as (
    SELECT
    BMKONZ as NI,
    BMIDEN as Artikel,
    TZBEZ1 as Bezeichnung,
    BMLIEF as Lieferant,
    Count(BMLM) AS Paletten,
    Sum(int(BMBMEN)) AS Menge,
    (
    select
    case when sum(int(TPBMEN)) is NULL then 0 else sum(int(TPBMEN)) end
    from
    pbesttp
    where
    tpiden = bmiden
    and tpttyp in ('E', 'U')
    ) as Transport
    FROM PBESTLOL1
    )
    select * from temp_result

    lg Andreas

  6. #6
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    nee, da fehlt einfach was!

    With aaa as ( ...... )

    select * from aaa where ..... <---- das fehlt doch!

    und im oberen teil mit sum( ...) fehlt evtl ein group by ... oder zumindest ein where
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Desweiteren ist auch dieses Konstrukt nicht erforderlich:

    case when sum(int(TPBMEN)) is NULL then 0 else sum(int(TPBMEN)) end

    Man kann Aggregate und Einzelwerte nicht einfach mischen.
    Hier reicht ein

    coalesce(sum(int(TPBMEN)), 0)

    Code:
    with temp_result as (                                                          
      SELECT                                                                       
        BMKONZ as NI,                                                              
        BMIDEN as Artikel,                                                         
        TZBEZ1 as Bezeichnung,                                                     
        BMLIEF as Lieferant,                                                       
        Count(BMLM) AS Paletten,                                                   
        Sum(int(BMBMEN)) AS Menge,                                                 
        (                                                                          
              select                                                               
                coalesce(sum(int(TPBMEN)), 0)
              from                                                                 
                 pbesttp                                                   
              where                                                                
                tpiden = bmiden                                                    
                and tpttyp in ('E', 'U')                                           
            ) as Transport                                                         
     FROM PBESTLOL1
     group by BMKONZ , BMIDEN , TZBEZ1 , BMLIEF 
    )select * from 
    temp_result
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Aug 2019
    Beiträge
    53
    Ja ihr habt Recht es fehlt ein Teil. Der SQL - Code ist eig. deutlich größer. Ich wollte nun erstmal stückchenweise den Code zum laufen kriegen. Danke für den Hinweiß mit dem Select. Der Code funktioniert nun.

    Danke für die Erklärung @Fuerchau !!

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nur so als Nachfrage:
    Warum immer Sum(int(Menge)) statt einfach Sum(Menge)?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. RDi Syntax Checker und **free
    By camouflage in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 05-02-21, 06:11
  2. Antworten: 7
    Letzter Beitrag: 23-03-15, 17:21
  3. Cast & when Syntax Frage
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 08-01-15, 19:13
  4. Fehler bei FTP
    By K_Tippi in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-12-02, 11:41
  5. TCP startet mit Fehler
    By chera in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 14-02-02, 13:26

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •