【发布时间】:2016-12-01 15:31:40
【问题描述】:
我们有一个用于跟踪客户奖励积分的网络应用。我们正在使用 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
按照建议,我使用 UNION 组合来自 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。