我在练习中遇到了这个问题而且让我疯狂,我无法解决它...基本上我使用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()的替代方法是什么?我想根据名称和订单按金额划分。
提前致谢。
答案 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