我想獲得MySql中連續兩行之間的區別。我正在努力解決,但沒有運氣。這裏是圖像Mysql中連續行之間的區別
我需要成「差別」列「數據2」列的行和結果之間的差異中的數據。
感謝您的關注,非常感謝您的幫助。
-RAM
我想獲得MySql中連續兩行之間的區別。我正在努力解決,但沒有運氣。這裏是圖像Mysql中連續行之間的區別
我需要成「差別」列「數據2」列的行和結果之間的差異中的數據。
感謝您的關注,非常感謝您的幫助。
-RAM
如果表有自動增量列「身份證」,我們可以通過ID順序,並確定下一行的值,並減去它
SELECT t1.*, t1.Data2-(SELECT t2.Data2 FROM `table_name` t2 WHERE t2.id > t1.id LIMIT 1) AS difference
FROM `table_name` t1
ORDER BY t1.id
從下一行值
減SELECT t1.*, t1.Data2-(SELECT t2.Data2 FROM `table_name` t2 WHERE t2.id < t1.id ORDER BY id DESC LIMIT 1) AS difference
FROM `table_name` t1
ORDER BY t1.id
因爲你沒有在表中的唯一列,可以通過包括綁定變量[@rn
&實現這一目標],其將唯一編號順序地添加到表中的每一行。
試試這個:
SELECT tab1.application_id, tab1.fiscal_year, tab1.data1, coalesce(cast(tab1.data2 as signed) -
cast(tab2.data2 as signed), tab1.data2) as diff
FROM
(SELECT b.application_id, @rn1:[email protected]+1 AS rank, b.fiscal_year, b.data1, b.data2
FROM your_table b, (SELECT @rn1:=0) t1) as tab1,
(SELECT a.application_id, @rn:[email protected]+1 AS rank, a.fiscal_year, a.data1, a.data2
FROM your_table a, (SELECT @rn:=0) t2) as tab2
WHERE tab1.rank = tab2.rank + 1;
什麼是從你給出的截圖你預期的效果? – sgeddes
這些都是你的專欄嗎?有主鍵嗎? –
預期的結果是「數據2」的差異(558-536),(578-558)等列結果。主鍵是application_id – IamRKY