Verknüpfung von Abfragen

ACC_Entwickler

Aktiver Benutzer
Beiträge
28
Guten Tag zusammen,
ich habe folgendes Problem.
Ich habe eine View erstellt, die mir diverse Daten anzeigen soll! siehe Beispiel im Anhang. Ich habe aber das Problem, dass mir die View nicht alle Daten ausgibt, sondern nur die, die genau eine WQ haben auf der Sachen gebucht sind. Ich habe glaube ich ein Problem mit meinen WHERE Bedingungen, kann aber nicht ausmachen wo es liegt.

Das ist mein Code:

SELECT x.WO,
x.Item,
x.[P/N],
x.[S/N],
x.[Part Beschreibung],
x.[Einzel EK],
x.Anzahl,
x.[Einzel VK],
x.[WQ] AS WQ,
x.[Gesamt VK],
x.Fertigstellung,
x.Split
FROM(
SELECT RIGHT(Format(CAST(A.counter AS int), '##-####'), 7) AS WO,
B.Nr AS Item,
W.[P/N],
W.[S/N],
Im.Artikelname AS [Part Beschreibung],
W.[EK-Preis] AS [Einzel EK],
W.[Anzahl Ausgänge] AS Anzahl,
W.[VK] AS [Einzel VK],
IIF(B.Memo LIKE '%WQ%',Format(CAST(SUBSTRING(B.[Memo], CHARINDEX('WQ20', B.[Memo]) + 4, 7) AS int), '##-####'), NULL ) AS WQ,
W.[VK] * W.[Anzahl Ausgänge] AS [Gesamt VK],
W.Nr AS Split,
B.[F-Datum] AS Fertigstellung
FROM SOdata.dbo.Aufträge AS A LEFT OUTER JOIN
SOdata.dbo.Beanstandungen AS B ON A.Auftragsnummer = B.Auftragsnummer LEFT OUTER JOIN
SOdata.dbo.Invmat AS Im ON A.Auftragsnummer = Im.Auftragsnummer LEFT OUTER JOIN
SOdata.dbo.Warenbuchung AS W ON A.Auftragsnummer = W.Auftragsnummer
WHERE (A.OrderType = 'Auftrag') AND (CHARINDEX('deleted', A.Auftragnr_neu) = 0 OR
CHARINDEX('deleted', A.Auftragnr_neu) IS NULL) AND
(CHARINDEX('Auftrag', A.OrderType) = 1) AND
(A.counter IS NOT NULL) AND
B.Nr = W.Item AND
Im.Item = W.Item AND
B.Nr = Im.Item AND
Im.[P/N] = W.[P/N]
)x
WHERE WO = '22-7001'
GROUP BY x.WO, x.Item, x.[P/N], x.[S/N], x.[Part Beschreibung], x.[Einzel EK], x.[Anzahl], x.[Einzel VK], x.[Gesamt VK], x.Fertigstellung, x.Split, x.WQ

Für die WO 22-7001 ist die Ausgabe korrekt! Allerdings für die WO 22-5127 nicht, dort wird mir gar nichts ausgegeben, obwohl es eine Menge Daten gibt. Der einzige große Unterschied ist eigentlich, dass die WO 22-5127 mehrere WQ's hat, die WO 22-7001 nur eine WQ auf der auch Parts gebucht sind... Deshalb glaube ich dass es irgendwo an der Stelle zu dem Fehler kommt.
Im Bild WO 22-5127 sieht man wie die WQ eingetragen sein kann und warum ich diese im Format verändern muss. Glaube aber nicht, dass es hier zu einem Fehler kommt, aber man weiß ja nie... Ich habe allerdings keine Ahnung wieso ich an dieser Stelle keine Werte angezeigt bekomme, für die entsprechende WO.

Falls mir jemand helfen kann und dafür mehr Daten braucht bitte ich um Rückmeldung. Ich hoffe das Problem ist deutlich genug beschrieben.
Danke im Vorraus!

LG Philipp
 

Anhänge

  • Items.PNG
    Items.PNG
    92 KB · Aufrufe: 3
  • WO 22-5127.PNG
    WO 22-5127.PNG
    48,4 KB · Aufrufe: 3
Werbung:
Ich sehe hier nicht, wie die Bilder bei der Beantwortung der Frage helfen sollen. Sie zeigen offenbar, dass andere WO Daten liefern.
WO ist eine formatierte Zahl, deren Quelle ein Geheimnis bleibt.
Ansonsten gibt es eine Reihe von Where Bedingungen in X, diese müssen verantwortlich sein. Also nach und nach weglassen, solange bis die gescuhten WO erscheinen.
Natürlich kann auch ein JOIN zu einer Einschränkung führen, die nicht berücksichtigt wurde. Die Join wirken nebenbei etwas durcheinander, da beteiligte Tabellen auch in den Where Conditions erneut "genannt" werden und zwar rein optisch so, als sei es ein weiterer Join, nicht gefiltert. Das kann im Übrigen die Left Outer Handhabung zerstören und damit vielleicht ungewollt Daten filtern, die eigentlich drin sein sollen.
 
Zurück
Oben