[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2009
    Beiträge
    128

    SQL: Daten aus mehreren Sätzen in einen Satz bringen, aber Position beibehalten

    Moin,
    ich muß in einem historisch gewachsenen System Daten aus mehreren Sätzen in einen Satz bringen.

    Beispiel: 2 Stücklisten

    Artikel Material Menge
    1 528 12
    1 22 1
    1 77 4
    2 53 2
    2 22 8
    2 11 3

    Pro Stückliste soll 1 Satz in der neuen Datei stehen. Darin die Mengen der enthaltenen Materialien, jedoch ohne Materialnummer. Es sind bestimmte Felder pro Materialnummer zu benutzen. Diese kommen aus einer Datei "Materialübersicht" mit einem Satz und 1000 Feldern:

    M0001 M0002 M0003... M0999 M1000
    77 528 11 22 53

    Steht also in der "Materialübersicht" das Material 22 in Feld 999 müssen auch die Mengen im Feld 999 landen:

    Artikel MN0001 MN0002 MN0003... MN0999 MN1000
    1 4 12 0 1 0
    2 0 0 3 8 2

    Hat jemand eine elegant Idee (gern innerhalb einer SQL procedure ohne RPG)? Arrays?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das musst du im ILERPG machen.
    Da kannst du mit der DS arbeiten und die Pseudoarrayfelder mit der Basisreferenz als Array defineren.

    dcl-ds Data name('DATEI') qualified;
    end-ds;

    dcl-s Basis * inz(%addr(Data.Feld001));
    dcl-s FeldArray like(Data.Feld001) dim(nnn);

    Per SQL gehts dann einfach pauschal.
    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
    Jun 2009
    Beiträge
    128
    Danke!
    Bin erst jetzt dazu gekommen dass zu Ende zu bringen. Hab's wie vorgeschlagen in RPG gemacht.

    Da hab ich jetzt nur ein Problem: Das perfekte Ergebnis hab ich in einer Array-Datenstruktur.
    Würde das gern in eine DS rüberschieben, die mit Likerec definiert ist.
    Wie kann ich das Array als Ganzes in die Likerec-DS schieben (quasi der alte MOVEA)?
    Irgendwie krieg ich's nicht gebacken (zu warm, wahrscheinlich...)

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Du kannst einen Pointer initialisiern mit %addr(feld) auf das 1. Element deiner Feldgruppe.
    Basierend auf diesem Pointer beschreibst du dein Array.
    Somit belegen Array und die Einzelfelder den selben Platz und Moves brauchst du nicht mehr.
    Wie oben beispielhaft beschrieben.
    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. SQL - Mehrere Sätze in einen Satz mit mehreren Spalten
    By wti in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 11-09-15, 13:47
  2. Antworten: 2
    Letzter Beitrag: 03-08-15, 13:40
  3. Antworten: 11
    Letzter Beitrag: 11-07-14, 11:32
  4. SQL mit Vergleich ANzahl Sätzen pro Kunde
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 06-06-14, 13:44
  5. Daten von Telefon-CD auf AS400 bringen
    By Schnichels in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 14-01-05, 16:07

Berechtigungen

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