[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Thema: Sql Abfrage

Hybrid View

  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Vielleicht hilft dir ja das weiter:

    Code:
    Select W1FINR || W1ART# || W1LFD# SP_NEU
    FROM L1ART1 WHERE W1STMP > 20120101
    GROUP BY W1FINR || W1ART# || W1LFD#
    ORDER BY SP_NEU;
    Bzw. wenn du Hilfe zu deinem Statement brauchst, dann poste uns das aktuelle bitte.

    lg Andreas

  2. #2
    Registriert seit
    Apr 2012
    Beiträge
    360
    Hallo Andreas,

    das wäre auch ein toller Ansatz für mein Problem.

    Kann ich mir eigentlich beim Caten die führenden nullen auch anzeigen lassen?

    Lg

    Tarki

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Für führende Nullen gibt es viele Möglichkeiten.

    Das wäre eine davon:
    Code:
    Select right('0000000000' || char(W1FINR), 10) || W1ART# || W1LFD# SP_NEU
    FROM L1ART1 WHERE W1STMP > 20120101
    GROUP BY right('0000000000' || char(W1FINR), 10) || W1ART# || W1LFD#
    ORDER BY SP_NEU;
    lg

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.936
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Für führende Nullen gibt es viele Möglichkeiten.

    Das wäre eine davon:
    Code:
    Select right('0000000000' || char(W1FINR), 10) || W1ART# || W1LFD# SP_NEU
    FROM L1ART1 WHERE W1STMP > 20120101
    GROUP BY right('0000000000' || char(W1FINR), 10) || W1ART# || W1LFD#
    ORDER BY SP_NEU;
    lg
    Sofern man die Feldlänge nicht verändern möchte, d.h. nur ein 8-stelliges numerisches Feld mit 8-Zeichen incl. den führenden Nullen anzeigen möchste, ist die Funktion DIGITS eleganter:

    Code:
    Select Digits(NumFld) concat Digits(NextNum) concat X ...
    Anstatt der double pipe (||) würde ich empfehlen immer CONCAT anzugeben. Die double pipe wird nicht in allen Umgebungen unterstützt, d.h. manchmal muss man stattdessen ein doppeltes Ausrufezeichen (!!) angeben.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Apr 2012
    Beiträge
    360
    Danke für eure Lösungen.

    Frau Hauser,
    Sie hatten mal alle möglichen Datumextraktionen gepostet, die ich leider momentan nicht auf anhieb hier finde.

    Was ist eigentlich der eleganteste Weg um das 1.Datum im Jahr zu ermitteln(20120101).
    Soll ich da wieder mit einer DS arbeiten oder geht das auch über ein BIF?

    Danke

  6. #6
    Registriert seit
    Sep 2005
    Beiträge
    426
    Soweit ich weis, ist das erste Datum im Jahr immer der 01.01.
    Einfach die Jahreszahl dahinter und fertig

    Oder was ???

    Der ILEMax

  7. #7
    Registriert seit
    Apr 2012
    Beiträge
    360
    Hallo,

    ich wollte es eigentlich ohne DS erledigen.
    Unser DatFormat schaut so aus: 20120731 (num. 8 0).

    Gruß

  8. #8
    Registriert seit
    Jan 2003
    Beiträge
    759
    <unschön>
    MOVEL JAHR4N DAT8N
    MOVE '0101' DAT8N
    </unschön>

    DAT8N = (JAHR4N*10000)+101;

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.765
    ILE:
    %int(Datum/10000) * 10000 + 0101;

    SQL:
    floor(Datum / 10000) * 10000 + 0101
    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

  10. #10
    Registriert seit
    Apr 2012
    Beiträge
    360
    Danke für eure Antworten und Hilfen.

    Gruß
    Tarki

  11. #11
    Registriert seit
    Apr 2012
    Beiträge
    360
    Hallo Herr Fuerchau,

    ich habe eine Datei, wo Abteilungen mit Datum, und Preisen hinterlegt sind.

    Wie erhalte ich eigentlich im Sql, nur einen Satz, der gerade aktuell ist, ohne das ich die anderen lesen müssen?

    Gruß

    Tarki

  12. #12
    Registriert seit
    Aug 2001
    Beiträge
    2.936
    Hast Du neben dem Datum und dem Preis auch noch andere Informationen z.B. Artikel-Nr. in der Datei?

    Sofern Du nur den Preis mit dem höchsten Datum willst, kannst Du diesen wie folgt ermitteln:

    Code:
    Select Datum, Preis
    From Datei
    Order By Datum Desc
    Fetch First Row Only
    Sofern Du zusätzlich z.B. auch noch die Artikel-Nr. hast und den Preis nur für einen bestimmten Artikel willst, kannst Du die gleiche Abfrage nehmen und fügst eine WHERE-Bedingung ein, mit der nur der entsprechende Artikel ausgewählt wird.

    Sofern Du den jeweils den aktuellen Preis von allen Artikeln willst wird die Sache etwas komplexer, d.h. Du brauchst entweder ein verschachteltes (Sub-)Select oder eine Common Table Expression, durch die zunächst das letzte Datum pro Artikel ermittelt wird. Das Ergebnis verknüpfst Du dann mit der eigentlichen Tabelle/Datei.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. Einfache Abfrage in COBOL/400 mit EXEC SQL
    By AS400-Anfänger in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 27-06-06, 14:18
  2. Abfrage nach <> Ziffern in SQL
    By behmer in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 29-05-06, 13:52
  3. sql abfrage
    By steven_r in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 17-05-06, 16:49
  4. Problem bei Abfrage bei Imbedded SQL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-06-05, 17:21
  5. sql abfrage mit substring
    By juergenkemeter in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 17-11-04, 15:32

Berechtigungen

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