我們有一個跟蹤客戶獎勵積分的web應用程序。我們正在使用MySQL數據庫。 我本來是從一個單一的表餘額(RunningTotal)拖着走的數據並顯示點的數量在每次交易查詢的代碼如下:通過聯盟查詢創建運行餘額總計
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
這工作得很好,直到它被發現有人未在ptrans_detail表中存在的一些條目,這個問題被張貼在這裏: Query Data from 2 MySQL tables with some duplicate records
至於建議,我用聯盟2個查詢從2個表結合起來,讓所有的記錄,查詢是:
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')
這很好,但現在我想在第一個查詢中添加RunningTotal。這可能嗎?
當然,考慮這整個語句作爲一個子查詢,在這裏做SELECT * FROM(您的工會查詢的運行總量外)。另外,mysql和sql server是不同的數據庫,你使用的是? –
嗨Rich,我正在使用MySQL。 – danman280