Tabelle B enthält geplante Werte. Tabelle M enthält tatsächliche Werte. Ich muss alle Zeilen in Tabelle B finden, in denen entweder keine tatsächlichen Werte (z. B. verbunden) Zeile in Tabelle M sind, oder wo verbundene Zeilen unterschiedliche Gesamt-Istwert-Zeilen haben. Ich versuche eine Kombination aus einem äußeren Join und der Summe ... Gruppe um dies zu erreichen, aber es funktioniert nicht, weil die 'Waisen' in Tabelle B nicht zurückgegeben werden.SQL Server mit linkem Join/mit Summe/Gruppe von
Meine Frage ist: -
SELECT B.Id, B.Date, b.Ref,SUM(M.Actual_Volume), SUM(B.Planned_Volume),
SUM(M.Actual_Value),SUM(B.Planned_Value)
FROM
TableB B
left JOIN TableM M on M.Id = B.Id
inner JOIN TableX on TableX.FieldX = B.FieldX
WHERE TableX.FieldY = (SELECT T.FieldY from TableX T where T.FieldX = 408344)
AND TableX.FieldZ = (SELECT T1.FieldZ from TableX T1 where T1.FieldX = 408344)
group by B.Id, B.Date, B.Ref
having SUM(M.Actual_Volume) <> SUM(B.Planned_Volume)
OR SUM(M.Actual_Value) <> SUM(B.Planned_Value)
order by b.Id
Wenn ich = statt <> die Wirklichkeiten zu vergleichen und ich geplant Reihen erhalten, die beitreten, aber ich brauche die Zeilen, in denen die Wirklichkeiten nicht gleich tun die geplante oder wo es eine geplante aber keine tatsächliche gibt.
Danke!
Table B
Id planned_vol planned val
19 2 350
28 1 100
53 3 650
61 1 50
Table M
M.Id B.Id actual_vol actual_val
58 19 2 350
65 28 1 100
66 53 1 150
die Abfrage sollte also zurückkehren,
B.Id
53 (because planned_vol <> actual_vol and planned_val <> actual_val)
61 (because B.Id 61 is not in table M)
hth!
Können Sie einige Beispieldaten für die Zeilen zeigen Sie, dass Sie (aus beiden Gründen) und mindestens eine Zeile zurückgegeben werden sollen, die Sie nicht tun will zurückgegeben werden. –
Quick-Fix wäre hinzuzufügen 'SUM (M.Actual_Volume) ist Null oder SUM (M.Actual_Value) ist null' zu haben, aber ich denke, dass Sie versuchen, beide Seiten der n: m Beziehung zu summieren. Dies wird mit der Datenduplikation enden. Könnten Sie mehr Informationen über Ihr Schema und Ihre Beziehung zwischen M und B veröffentlichen? –
Ja, tableB zu TableM ist m: m, weil die definierende Tabelle TableX ist – epx