[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2002
    Beiträge
    1.121

    SQL mit Vergleich ANzahl Sätzen pro Kunde

    Hallo Gemeinde !
    Hätte da auch noch einmal eine Frage.
    Ich habe 2 Dateien. Der Einfachkeit File1 und File2.
    In dieser stehen je n Sätze pro Kunde. Ich möchte jetzt in einem SQL nur die Kunden, die eine unterschiedliche Satzanzahl in beiden Dateien haben.
    Bis jetzt hätte ich das über eine Zwischendatei gelöst, in der die Kundennummer und 2 Felder für die Anzahl der Sätze aus File 1 und 2 waren.
    Das geht doch bestimmt auch in einem SQL....?

    Gruß
    Ronald

  2. #2
    Registriert seit
    Mar 2003
    Beiträge
    80
    So würde ich da lösen:


    with x
    as (select gv11fc, count(*) as cnt from gvp011 group by gv11fc),
    y as (select gv11fc, count(*) as cnt from gvp011x group by gv11fc)
    select x.gv11fc, x.cnt, y.cnt from x
    left outer join y on x.gv11fc=y.gv11fc
    where x.cnt <> y.cnt

    lg

  3. #3
    Registriert seit
    May 2002
    Beiträge
    1.121
    Danke!
    Geht wunderbar.
    War mir nicht bewusst, das ich bei with mehrere Dateien angeben kann. Hatte da bis jetzt immer nur mit X gearbeit.

    Danke
    Ronald

  4. #4
    Registriert seit
    Dec 2004
    Beiträge
    203
    Oder so ...

    select a.knr from lib/file1 a
    where (select count(*) from lib/file1 b
    where b.knr = a.knr) <>
    (select count(*) from lib/file2 c
    where c.knr = a.knr)
    group by knr

    Hat bei mir in einem Schnelltest geklappt Deshalb mal ohne Gewähr ...

    Gruß,
    Ralf

  5. #5
    Registriert seit
    May 2002
    Beiträge
    1.121
    Ach das klappt bei mir!
    Thx
    Ronald

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Was ist eigentlich mit Kunden, die nur in der zweiten Datei enthalten sind?

  7. #7
    Registriert seit
    May 2002
    Beiträge
    1.121
    Es geht in diesem Fall nur um Kunden die in beiden Dateien sind.
    Kunden die nur in A oder B sind, spielen in meinem Fall keine Rolle.
    (und "sollten" eigentlich nicht vorkommen....)

    Ronald

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Probier mal so.
    Alle Kunden jeweils mit Anzahl ohne die "doppelten".
    Das müßte auch in dem Fall gehen, der nie vorkommt.

    SELECT DISTINCT KUNDE FROM (
    SELECT COUNT(*) ANZAHL, KUNDE FROM FILE1 GROUP BY KUNDE UNION ALL
    SELECT COUNT(*) ANZAHL, KUNDE FROM FILE2 GROUP BY KUNDE) AUSWAHL
    GROUP BY ANZAHL, KUNDE HAVING COUNT(*)=1 ORDER BY KUNDE

  9. #9
    Registriert seit
    May 2002
    Beiträge
    1.121
    Und auch diese Auswahl bringt mir meine 3 Kunden zum Vorschein.

    Danke

Similar Threads

  1. SQL Anzahl wenn mehrer Felder gleich sind
    By post in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 28-04-14, 10:39
  2. Antworten: 1
    Letzter Beitrag: 04-06-03, 13:15
  3. Gross-/Klein Vergleich ILE RPG
    By cicero22 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 22-04-03, 20:03
  4. Kleinster FRIDA-Kunde mit drei Anwendern
    By RM Haaßengier in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 13-02-02, 15:01
  5. Beschränkung auf Anzahl Felder in Tabelle????
    By KB in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-09-01, 10:56

Berechtigungen

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