我在练习中遇到了这个问题,它让我发疯,我无法修复它......基本上我使用的是 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
Run Code Online (Sandbox Code Playgroud)
当您没有任何唯一的 id 可供参考时,在 SQL Lite 中使用 ROW_NUMBER() 的替代方法是什么?我想按名称分区并按金额排序。
提前致谢。
这很丑陋,但由于没有窗口函数,这是我所知道的模仿该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
Run Code Online (Sandbox Code Playgroud)
结果:
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
Run Code Online (Sandbox Code Playgroud)