Sqlite 基于变量的增量值

Sqlite 基于变量的增量值,sqlite,Sqlite,我有一张这样的桌子: DATE user_id amount_spent 2018-04-16 xxxx 0.99 2018-05-16 xcxc 5.10 2018-05-18 xdxd 4.99 2018-04-17 xvxv 7.00 ... 我需要添加另一个名为ID的列,该列的范围为1到n,并指示每个用户的购买位置。1是第一次购买的订单,n是最后一次购买的订单 所以它会输出如下内容: DATE u

我有一张这样的桌子:

DATE         user_id  amount_spent
2018-04-16    xxxx     0.99
2018-05-16    xcxc     5.10
2018-05-18    xdxd     4.99
2018-04-17    xvxv     7.00
...
我需要添加另一个名为ID的列,该列的范围为1到n,并指示每个用户的购买位置。1是第一次购买的订单,n是最后一次购买的订单

所以它会输出如下内容:

DATE         user_id  amount_spent   ID
2018-04-16    xxxx     0.99          1
2018-05-16    xcxc     5.10          2
2018-05-18    xdxd     4.99          4
2018-04-17    xvxv     7.00          3
...
所以我的代码看起来像这个atm机:

    ALTER TABLE temp_table
    ADD ID VARCHAR;

  UPDATE temp_table SET ID = (SELECT * FROM (WITH RECURSIVE
  cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x< (select count(*) from temp_table))
SELECT x FROM cnt));
但是该ID与日期没有关联,它只为每个ID输出1

任何帮助都将不胜感激,谢谢

使用a来计算有多少行具有较小的日期值:

UPDATE temp_table
SET ID = (SELECT count(*)
          FROM temp_table AS t2
          WHERE t2.DATE <= temp_table.DATE);

或者,按正确的顺序将行插入临时表中,然后rowid值是正确的。

谢谢您的帮助,但您编写的代码显示了有多少行具有相同的日期,但这不是我想要实现的。@Promap解决方案对我来说很正确,所以我签出了它。对于您提供的示例数据,它似乎是有效的:@Promap That not=但这很奇怪,因为当我对数据集For ID尝试相同的代码时,它会输出同一日期的最后一个ROWID。例如,如果我对2018-04-16有9个观察结果,那么它对所有ID都输出9。我知道这一定是我的错,就像我在解释中遗漏了什么一样。对不起@Promap示例数据中没有重复的日期。过滤器t2.DATE