【发布时间】:2017-01-30 19:25:38
【问题描述】:
我有如下表格
+ --- + --- +
| AID | Tag |
+ --- + --- +
| 1 | 1 |
| 2 | 2 |
| 2 | 3 |
| 2 | 820 |
| 2 | 821 |
| 3 | 2 |
| 4 | 5 |
| 4 | 18 |
| 4 | 2744|
| 4 | 2745|
+ --- + --- +
当我编写以下 SQL Server 2008 代码时
select AID,
Tag,
RANK() over (partition by AID order by Tag asc) as rank
from My_Table
它产生以下结果
+ --- + --- + ---- +
| AID | Tag | Rank |
+ --- + --- + ---- +
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 2 | 3 | 2 |
| 2 | 820 | 3 |
| 2 | 821 | 4 |
| 3 | 2 | 1 |
| 4 | 5 | 1 |
| 4 | 18 | 2 |
| 4 | 2744| 3 |
| 4 | 2745| 4 |
+ --- + --- + ---- +
这正是我想要的。
现在,我想在 Visual FoxPro 9 SQL 中编写相同的内容。我使用 recno() 进行了尝试,如here 所示;这对我的记录进行了编号,但似乎不支持分区功能,并且 VFP 9 SQL 似乎不支持相关子查询。我知道我可以用光标和扫描来做到这一点,但我不想那样做。有什么建议吗?
【问题讨论】:
-
为什么不在sql server中使用存储过程呢?我怀疑 VFP 是否会支持窗口函数,因为该语言十多年来没有更新,MS 不再支持或进行升级。
-
希望将整个系统迁移到 SQL。但我不负责。
标签: sql visual-foxpro dense-rank