SQL - Abfrage mit mehreren gleichen Werten

rs71

New Member
Hallo,

ich bin, wahrscheinlich wie manch Anderer auch, etwas verzweifelt, da ich ein Problem nicht lösen kann.:confused:

Ich versuche eine Abfrage zu erstellen, in der nur gleiche Werte angezeigt werden, die mehrfach vorhanden sind.

Also, Tabelle a sieht folgendermaßen aus:

KTR44 KTR12 KTR07 KTR08 etc.
1.) Proj-1 101101 101101 001
2.) Proj-1 101101 101101 002
3.) Proj-1 101202 101202
4.) Proj-2 101303 101304 001
5.) Proj-3 101404 101404 001

KTR44 = Projekt
KTR12 = übergeordneter Kostenträger
KTR07 = untergeordneter Kostenträger
KTR08 = Baugruppe des untergeordneten Kostenträgers

Tabelle b
FAK07 = untergeordneter Kostenträger
FAK08 = Baugruppe des untergeordneten Kostenträgers
FAK28 = Bezeichnung des untergeordneten Kostenträgers

KTR07 und KTR08 werden zusammengeführt als KTR07 + '-' + KTR08 AS KTRBGR

Was ich möchte, ist, dass nur die Daten angezeigt werden,
I.) bei denen KTR12 mehr als ein KTRBGR zugewiesen hat und
II.) wenn KTR12 nur ein KTR07 zugewiesen bekommt, aber KTR12 <> KTR07
Also müßten die Zeilen 3 und 5 rausfliegen.

In der Tabelle kann
KTR07 = KTR12 und / oder
KTR08 leer sein.

Ich habe schon diverse Count oder Group by ohne Erfolg ausprobiert. Eigentlich müsste man für I.) nur ein GROUP BY KTR12 having Count (KTR12) > 1, aber da ich die anderen Spalten nicht gruppiere und eine Variable KTRBGR benutze, bekomme ich immer eine Fehlermeldung.

Folgendes statement habe ich probiert, aber durch das GROUP BY bekomme ich nur jeweils 1x KTR07 angezeigt, was aber nicht richtig ist, da unter KTR12 bis zu jeweils 50 gleiche KTR07 mit keiner oder anderen KTR08 vorkommen können.

SELECT KTR44, KTR12, REPLACE(FAK28, '"', ''),KTR07
FROM aLEFT OUTER JOIN a ON KTR12 = FAK07
WHERE KTR12 <> '' GROUP BY KTR07, KTR12, FAK28, KTR44
having count (KTR07) = 1
ORDER BY KTR44, KTR12, KTR07

Ich habe KTR12 mit FAK07 gejoint da ich die Bezeichnung für KTR12 aus der Tabelle b brauche.

Also, ich hoffe, ich konnte mein Problem einigermaßen verständlich erläutern und wäre sehr dankbar, wenn mir hierbei jemand helfen könnte!!!:)
 
Ich bin mir jetzt nicht sicher, ob ich dich richtig verstanden habe, aber:
Code:
SELECT count(blah) as anzahl, blah
FROM blah_tabelle
GROUP by blah
ORDER by anzahl DESC
...damit solltest du alle Einträge zusammengefasst bekommen mit der Anzahl, wie oft sie vorkommen, schön sortiert auch noch. Einziger Nachteil: Auch, wenn sie nur einmal vorkommen, erscheinen sie dann, die Zeilen mit anzahl=1 müsstest dann halt noch extra rausfiltern, würde theoretisch ja auch als Subquery gehen, direkt im selben Query geht das leider nicht.


MfG Christian
 
Back
Top