获取一列显示每个不同日期的操作索引

时间:2014-08-15 13:49:02

标签: sqlite

我有一张表存储不同日期的操作。是否有可能获得一个列显示每个不同日期的操作索引?

这是我的表:

id    date          sum
 1    2014-01-03    -31.00
 2    2014-01-03    +21.21
 4    2014-01-03    - 2.90
 5    2014-01-12    +10.00
 6    2014-01-18    -18.93
 8    2014-01-24    - 4.38
11    2014-01-24    - 6.00

这是我的查询应该显示的内容:

id    date          sum       index
 1    2014-01-03    -31.00        1  -- first operation on the 2014-01-03
 2    2014-01-03    +21.21        2  -- second operation on the 2014-01-03
 4    2014-01-03    - 2.90        3  -- etc...
 5    2014-01-12    +10.00        1
 6    2014-01-18    -18.93        1
 8    2014-01-24    - 4.38        1
11    2014-01-24    - 6.00        2

1 个答案:

答案 0 :(得分:1)

使用其他DBMS,使用窗口函数非常容易。但是SQLite不支持它们,所以你需要使用一个共同相关的子查询,这使得它很慢:

select t1.id, 
       t1.date, 
       t1.sum, 
       (select count(*) from the_table t2 where t2.date = t1.date and t2.id <= t1.id) as idx
from the_table t1
order by date, id;

但正如我所说: 会变慢!


顺便说一句:date是一个可怕的名字。一个是因为它也是一个保留字,但更重要的是因为它没有记录列存储的内容。订单日期?到期日?截止日期? ...