如何在不使用ROW_NUMBER()的情况下模仿ROW_NUMBER()功能?

时间:2016-02-01 12:28:06

标签: sql sqlite

我在练习中遇到了这个问题而且让我疯狂,我无法解决它...基本上我使用SQLLite所以我只能使用任何窗口函数来获得结果更痛苦的部分是已经创建的架构上没有唯一的id。见例:

**Name,  DateAdded,  Amount**
John,  2015-10-12, 100.00
John,  2015-10-15, 50.00
Aaron, 2015-09-20, 10.00
Paul,  2014-12-20, 24.00
Paul,  2015-12-23, 32.00

当您没有任何唯一ID时,在SQL Lite中使用ROW_NUMBER()的替代方法是什么?我想根据名称和订单按金额划分。

提前致谢。

1 个答案:

答案 0 :(得分:3)

这是各种丑陋的,但没有窗口函数,这是我所知道的模仿row_number函数的唯一方法:

select
  t.Name, t.DateAdded, t.Amount,
  ( select count (*)
     from MyTable u
     where
       t.Name = u.Name and
       t.DateAdded >= u.DateAdded
  ) as row_number
from MyTable t

结果:

John    2015-10-12  100 1
John    2015-10-15  50  2
Aaron   2015-09-20  10  1
Paul    2014-12-20  24  1
Paul    2014-12-23  32  2