R
rs71
Hallo,
ich bin, wahrscheinlich wie manch Anderer auch, etwas verzweifelt, da ich ein Problem nicht lösen kann.
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 auch
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, wahrscheinlich wie manch Anderer auch, etwas verzweifelt, da ich ein Problem nicht lösen kann.
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 auch
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