2

我必须找到表的单个列的值的差异作为当前行值 - 一列中某些“n”行的前一行值,而且我没有 ID 用作增量的参考

日期:box_count:total_no_of_boxes_used

1/12/12 2   2
2/12/12 8   6
3/12/12 14  6

我有 box_count 列,我正在尝试获取 total_no_of_boxes_used 列。请帮我。

提前致谢

4

3 回答 3

2

鉴于您的记录按日期顺序排列......

询问:

select a.date, a.bc, case when (a.bc-b.bc) is null then a.bc else a.bc-b.bc end tot
from tt a
left join 
tt b
on a.date > b.date
group by b.date
;

结果:

DATE                            BC      TOT
December, 01 2012 00:00:00+0000     2   2
December, 02 2012 00:00:00+0000     8   6
December, 03 2012 00:00:00+0000     14  6
December, 04 2012 00:00:00+0000     23  9
于 2013-01-09T12:05:23.990 回答
1

一种方法是使用相关子查询,如下所示:

SELECT
  t1.`date`,
  t1.box_count,
  t1.box_count -
  IFNULL((SELECT t2.box_count
          FROM table1 t2
          WHERE t2.`date` < t1.`date`
          ORDER BY t2.`date` DESC
          LIMIT 1), 
        0 ) AS total_no_of_boxes_used
FROM table1 t1;

SQL 小提琴演示

这会给你:

|                            DATE | BOX_COUNT | TOTAL_NO_OF_BOXES_USED |
------------------------------------------------------------------------
|  January, 12 2012 00:00:00+0000 |         2 |                      2 |
| February, 12 2012 00:00:00+0000 |         8 |                      6 |
|    March, 12 2012 00:00:00+0000 |        14 |                      6 |
于 2013-01-09T12:04:21.170 回答
0

试试这个:

SELECT date, 
       (box_count - @diff) total_no_of_boxes_used, 
       (@diff:=box_count) box_count
FROM table1, (SELECT @diff:=0) A;

检查这个SQL FIDDLE 演示

输出

|                            DATE | TOTAL_NO_OF_BOXES_USED | BOX_COUNT |
------------------------------------------------------------------------
|  January, 12 2012 00:00:00+0000 |                      2 |         2 |
| February, 12 2012 00:00:00+0000 |                      6 |         8 |
|    March, 12 2012 00:00:00+0000 |                      6 |        14 |
于 2013-01-09T12:03:46.830 回答