Wir haben eine Webanwendung, die Prämienpunkte für Kunden erfasst. Wir verwenden eine MySQL-Datenbank. Ich hatte ursprünglich eine Abfrage, die Daten aus einer einzigen Tabelle gezogen und zeigte die Menge der Punkte in jeder Transaktion zusammen mit der Waage (Running) der Code unten:Erstellen eines Laufbilanzsaldos bei Abfrage mit Union
SELECT DateSubmitted
, PointTotal as Points
, (SELECT SUM(PointTotal)
FROM ptrans_detail x
WHERE x.CustID = a.CustID
AND (x.DateSubmitted < a.DateSubmitted OR x.DateSubmitted = a.DateSubmitted)) AS RunningTotal
, comment
FROM ptrans_detail a
WHERE CustID='10009'
Order by TransID Desc
Das funktionierte gut, bis es entdeckt wurde, dass es einige Einträge waren, die nicht in der Tabelle ptrans_detail hat existiert und diese Frage wurde hier gepostet: alle Datensätze Query Data from 2 MySQL tables with some duplicate records
Wie vorgeschlagen, ich UNION 2 Anfragen von 2 Tabellen zu kombinieren, zu gewöhnen, dass die Anfrage:
SELECT CustID
, DateSubmitted
, Type
, Points
FROM `trans_summary`
WHERE CustID = '10009'
UNION
SELECT CustID
, DateSubmitted
, Type
, PointTotal
FROM `ptrans_detail`
WHERE CustID = '10009'
and DateSubmitted NOT IN
(SELECT DateSubmitted FROM
`trans_summary`
WHERE CustID = '10009')
Das hat gut funktioniert, aber jetzt möchte ich das RunningTotal wie in der ersten Abfrage hinzufügen. Ist das möglich?
Sicher, betrachten diese ganzen Aussagen, die als Unterabfrage und tut, um die laufende Summe außerhalb des SELECT * FROM (Ihre Union-Abfrage hier). Außerdem sind mysql und sql server verschiedene Datenbanken, die Sie verwenden? –
Hallo Rich, ich benutze MySQL. – danman280