2016-05-13 17 views
0
Wert links nimmt
SELECT p.ticket AS posted, 
     e.ticket AS settled, 
     Sum(e.amount) 
FROM post AS p 
     LEFT JOIN settle AS e 
       ON p.ticket = e.ticket 
WHERE p.date = '2016-05-10 00:00:00.000' 
GROUP BY p.pticket, 
      e.eticket 
ORDER BY posted 

Ich verstehe, dass die Gruppierung oder wo der Täter ist, aber ich habe so viele Variationen versucht, die Reihen für die beiden Tabellen sind:
(Tabelle 1 = Tabelle 2)
(Gesamt = (Artikel + Steuern = Gesamt))links schließt nulls beitreten und

So die zweite Tabelle hat zwei Zeilen, die ich Summe. Ich brauche das Datum, weil es zu viele Informationen gibt und ich habe versucht "ist Null" in Daten und an anderen Orten, aber kann nicht richtig. Anstelle von null zeigt es den Wert der linken Tabelle an, als ob sie übereinstimmen.

+1

Können Sie uns eine Tabellenstruktur zusammen mit der erwarteten und beobachteten Ausgabe zeigen? Sie möchten wahrscheinlich etwas wie "COALESECE (sum (e.AMOUNT), 0)" machen, aber ohne Daten ist es schwer zu sagen. –

+0

aufgeräumt Code, Grammatik, Tags – rsjaffe

+0

zeigen Sie Ihre aktuelle Ausgabe und erwartete Ausgabe. Datenprobe wäre auch nett. –

Antwort

0

Also ich herausgefunden! Ich liebe diese Seite und wollte Eingaben hinterlassen für diejenigen, die in diese Informationen geraten. Bitte korrigieren Sie mich, wenn meine Informationen nicht korrekt sind, wie ich es im Detail erklären möchte, aber im Grunde, was ich verstehe und von SQL Fundamentals werden Nullen als äußere Zeilen und deshalb müsste ich ein „Left Outer Join“:

SELECT p.ticket AS posted, 
      e.ticket AS settled, 
      Sum(e.amount) 
    FROM post AS p 
      LEFT JOIN settle AS e 
      ON p.ticket = e.ticket 
    WHERE p.date = '2016-05-10 00:00:00.000' 
    GROUP BY p.pticket, 
      e.eticket 
    ORDER BY posted 

eine gute Regel, die für mich stand und hilft mir, meine mit nulls verbindet zu überprüfen ist, dass die Where Klausel nur Bedingungen für die Tabelle haben soll, wo die Nullen werden nicht eingeschlossen, daher behalten Sie die äußeren Zeilen mit Ausnahme von "ist null". Sie könnten das mit einer Spalte in der nicht beibehaltenen Tabelle verwenden und trotzdem Nullen erhalten.

+0

Das Wort "Outer" ist optional. es sollte keine Änderung im Verhalten verursachen. Was where clause yes betrifft, wenn Sie die Ergebnisse der Tabelle auf der rechten Seite eines linken Joins begrenzen wollen und die Nullen behalten wollen, dann müssen Sie die begrenzende Kritik als AND auf die ON Clause setzen, also ... 'auf p.ticket = e.ticket und e.attribute = 'wert' WO p.date = Datum' – xQbert

+0

Danke !, yea ich las ursprünglich auch, dass äußere war optional, wird versuchen, aber wenn ich anfing, auf äußere zu lesen Reihen, es schien ein wenig mehr Sinn, wird versuchen und zu replizieren, wenn ich eine Chance bekomme, aber der Denkprozess in meiner Antwort hat mir geholfen, danke nochmal! – berni3mack