PDA

View Full Version : SQL mit Vergleich ANzahl Sätzen pro Kunde



malzusrex
06-06-14, 09:55
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

alfredo
06-06-14, 10:48
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

malzusrex
06-06-14, 11:00
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

TheDevil
06-06-14, 11:10
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

malzusrex
06-06-14, 11:25
Ach das klappt bei mir!
Thx
Ronald

Pikachu
06-06-14, 11:34
Was ist eigentlich mit Kunden, die nur in der zweiten Datei enthalten sind?

malzusrex
06-06-14, 12:28
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

Pikachu
06-06-14, 12:33
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

malzusrex
06-06-14, 12:44
Und auch diese Auswahl bringt mir meine 3 Kunden zum Vorschein.

Danke