Probleme mit SQL-Statement

01/12/2007 - 11:10 von Uli Münch | Report spam
Hallo NG,

ich habe ein SQL-Statement welches mir ein paar, für mich nicht erklàrbare
Probleme bereitet.
Im Prinzip funktioniert es perfekt. Aber kurioserweise tauchen alle Zeilen
der Tabelle 'zeilengr',
für die es niemals eine JOIN-Verknüpfung geben kann, doppelt im Ergebnis
auf.


Dies habe ich auch schon probiert, hilft aber nicht.

CASE WHEN LEN(a.ka)>0 AND LEN(a.kennung)=0 THEN ISNULL(w.menge_plan,0)
WHEN LEN(a.kennung)>0 THEN ISNULL(r.menge_plan ,0) ELSE 0 END AS


Ich bedanke mich für jede Hilfe.

mfG
Uli Münch




SELECT a.nummer AS 'zeile',a.ka,
CASE WHEN LEN(a.ka)>0 AND LEN(a.text)=0 THEN k.text1 ELSE a.text END AS
'text1',
CASE WHEN LEN(a.ka)>0 AND LEN(a.kennung)=0 THEN ISNULL(w.menge_plan,0)
WHEN LEN(a.ka)=0 AND LEN(a.kennung)=0 THEN 0
WHEN LEN(a.kennung)>0 THEN ISNULL(r.menge_plan ,0) END AS
'leistung_p',
CASE WHEN LEN(a.ka)>0 AND LEN(a.kennung)=0 THEN ISNULL(w.menge_ist,0)
WHEN LEN(a.ka)=0 AND LEN(a.kennung)=0 THEN 0
WHEN LEN(a.kennung)>0 THEN ISNULL(r.menge_ist ,0) END AS
'leistung_i',
CASE WHEN LEN(a.ka)>0 AND LEN(a.kennung)=0 THEN ISNULL(w.ist_pe,0)
WHEN LEN(a.ka)=0 AND LEN(a.kennung)=0 THEN 0
WHEN LEN(a.kennung)>0 THEN ISNULL(r.ist_pe ,0) END AS 'ist_p',
CASE WHEN LEN(a.ka)>0 AND LEN(a.kennung)=0 THEN ISNULL(w.ist_fe,0)
WHEN LEN(a.ka)=0 AND LEN(a.kennung)=0 THEN 0
WHEN LEN(a.kennung)>0 THEN ISNULL(r.ist_fe ,0) END AS 'ist_f',
CASE WHEN LEN(a.ka)>0 AND LEN(a.kennung)=0 THEN ISNULL(w.soll_pe,0)
WHEN LEN(a.ka)=0 AND LEN(a.kennung)=0 THEN 0
WHEN LEN(a.kennung)>0 THEN ISNULL(r.soll_pe ,0) END AS
'soll_p',
CASE WHEN LEN(a.ka)>0 AND LEN(a.kennung)=0 THEN ISNULL(w.soll_fe,0)
WHEN LEN(a.ka)=0 AND LEN(a.kennung)=0 THEN 0
WHEN LEN(a.kennung)>0 THEN ISNULL(r.soll_fe ,0) END AS
'soll_f',
CASE WHEN LEN(a.ka)>0 AND LEN(a.kennung)=0 THEN ISNULL(w.plan_pe,0)
WHEN LEN(a.ka)=0 AND LEN(a.kennung)=0 THEN 0
WHEN LEN(a.kennung)>0 THEN ISNULL(r.plan_pe ,0) END AS
'plan_p',
CASE WHEN LEN(a.ka)>0 AND LEN(a.kennung)=0 THEN ISNULL(w.plan_fe,0)
WHEN LEN(a.ka)=0 AND LEN(a.kennung)=0 THEN 0
WHEN LEN(a.kennung)>0 THEN ISNULL(r.plan_fe ,0) END AS
'plan_f',
a.typ,summe_betr,a.summe_leis,a.druck_sumb,a.druck_suml,a.zeile_nr1,a.zeile_nr2,a.zeile_nr3,
a.formel_pf,a.formel_pp,a.formel_sf,a.formel_sp,a.formel_if, a.formel_ip
FROM zeilengr a LEFT OUTER JOIN #kst_werte w ON a.ka = w.ka
LEFT OUTER JOIN ka k ON a.ka=k.nummer
LEFT OUTER JOIN #rest_werte r ON a.nummer =r.nummer ORDER BY 1
 

Lesen sie die antworten

#1 Peter Doering
01/12/2007 - 12:07 | Warnen spam
Hallo,

Uli Münch wrote:

ich habe ein SQL-Statement welches mir ein paar, für mich nicht erklàrbare
Probleme bereitet.
Im Prinzip funktioniert es perfekt. Aber kurioserweise tauchen alle Zeilen
der Tabelle 'zeilengr',
für die es niemals eine JOIN-Verknüpfung geben kann, doppelt im Ergebnis
auf.



Das liegt daran:

FROM zeilengr a LEFT OUTER JOIN ...



Wenn du nicht alle aus zeilengr haben willst, darfst du keinen LEFT JOIN
setzen.

Gruss - Peter

Ähnliche fragen