0
下面是從表中的樣本數據集:MySQL的:獲取下一行值
| callid | called | calling | end |
|------------|--------------|-------------|---------------------|
| 1411482360 | 001143792042 | 08444599175 | 2014-07-31 13:55:03 |
| 1476992122 | 001143792042 | 08441713191 | 2014-07-31 14:05:10 |
到目前爲止,我已經成功地獲取前行的值,我需要在下一個行值也。這裏是我的查詢:
SELECT c.called as customer, c.calling as company, DATE_FORMAT(c.`end`,'%Y-%m-%d') as _date,
@G := if(@prevComp <> c.calling AND @prevCust = c.called AND @prevDate = DATE_FORMAT(c.`end`,'%Y-%m-%d'), 1, 0) as Gain,
@prevCust := c.called as prevCust,
@prevComp := c.calling as prevComp,
@prevDate := DATE_FORMAT(c.`end`,'%Y-%m-%d') as prevDate
FROM cdrdata_archive c CROSS JOIN
(SELECT @prevComp := NULL, @prevCust := NULL, @prevDate := NULL) prevVals
ORDER BY c.called, c.`end`
上述查詢將返回以下結果集:
Customer Company Date prevCust prevComp prevDate Gain
00140443360 08434599117 2014-01-28 00140443360 08434599117 2014-01-28 0
00475172558 08434599218 2014-01-27 00475172558 08434599218 2014-01-27 0
00475172558 08434593455 2014-01-27 00475172558 08434599118 2014-01-27 1
我需要一個和下一個行值來計算損失的,取得呼籲每家公司。我設法得到正確的增值,但是爲了計算Lost
的值(類似於Gain
但在一個新的專欄中),我需要下一位客戶,公司和日期。
這可以適合這個查詢沒有太多的成本或我需要重寫它嗎?
是否http://stackoverflow.com/questions/27160298/referencing-next-and-previous-row-值有幫助? – Barmar 2015-02-11 21:28:49