[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2019
    Beiträge
    36
    Hi Andreas,
    das != wird nur vom Greenscreen nicht akzeptiert, da müsste es ^= sein.
    Aber ich glaube auch dass liegt am Zeichensatz.
    LG Andreas

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    != wird im IBM i SQL inzwischen wie <> behandelt.
    Float ist ein schechter Cast da dieser nur 7-stellig genau ist. Double wäre da besser, da es 15 Stellen kann.
    Zusätzlich wäre dann noch ein round(...) empfehlenswert.
    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

  3. #3
    Registriert seit
    Mar 2019
    Beiträge
    36
    Danke für den Hinweis auf double. Für den round() mach ich das Ganze , da vorher die Ergebnisse auf 2 Stellen abgeschnitten wurden und somit bei 73.488 nur 73.48 anstatt 73.49 raus kam.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das Problem ist, dass für die Summenfelder ggf. das Maximum als Zwischenergebnis verwendet wird, also Dec(31, 2).
    Bei Dec(31, 2) / Dec(31, 2) gibt es leider zu wenig Nachkommastellen.
    Wenn man allerdings weiß, dass die Summe nicht größer als 15 Stellen haben wird, ist es besser diese zu casten, also dec(sum(....), 15, 2).
    Dann klappt es auch mit der Division. Vorteil: Double ist im Nachkommabereich relativ ungenau.

    Nachtrag zur Performance:

    case when sum(MENGE) != 0
    then sum(EK*MENGE)/sum(MENGE)
    end as EKPR

    ersetzen durch:
    sum(EK*MENGE)/nullif(sum(MENGE), 0) as EKPR
    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
    Mar 2019
    Beiträge
    36
    Habe ich dann im EKPR, wenn die sum(Menge) = 0 ist, als Ergebnis 0 oder null?

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da dein Case keinen Else hat ist da auch das Ergebnis NULL.
    Wenn du im Ergebnis 0 brauchst, dann geht das wiederum so:

    coalesce( sum(EK*MENGE) / nullif(sum(MENGE), 0), 0 ) as EKPR
    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

  7. #7
    Registriert seit
    Mar 2019
    Beiträge
    36
    Danke für die Hilfe!
    Ich benötige null um diese Sätze gezielt auszuschließen von der Verarbeitung.
    Mit deiner Antwort und dem Nachlesen in der SQL-Referenz, bin ich mir jetzt sicher.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nachlesen hilft immer;-).
    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. Warum bekomme ich mal ein joblog, mal nicht
    By ILEMax in forum IBM i Hauptforum
    Antworten: 15
    Letzter Beitrag: 25-07-17, 11:10
  2. Ja wo laufen sie denn, Ja wo laufen sie denn hin
    By KingofKning in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 24-12-14, 11:10
  3. wie bekomme ich verschiedene Schriften auf 1 Seite
    By gize in forum NEWSboard Drucker
    Antworten: 6
    Letzter Beitrag: 22-02-05, 06:48
  4. Wie bekomme ich eine SAVF auf die AS400
    By Miles in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 13-10-03, 19:47
  5. Was ******SE und wo bekomme ich es??
    By Arbi in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 22-09-01, 10:13

Tags for this Thread

Berechtigungen

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