我正在尝试帮助某人将数据按字母顺序排列并加上行号。我想我可以做这样的查询
从“数据”中选择“名称”,ROWNUM() 作为“行”,按“名称”排序
但我只是收到“权限被拒绝”错误或类似错误。
有人能帮忙吗?ROWNUM() 是否按我认为的方式工作?或者有没有更好的方法来获取按名称排序的数据的行号?
这是我收到的错误:
访问被拒绝:语句中的 ROWNUM [SELECT "Description", ROWNUM( ) FROM "Data" ORDER BY "Description" ASC]
答案1
我现在有一个使用工具> SQL 的解决方案......
我从未排序的“数据”表开始。对我来说,它只是一个带有自动生成的“ID”和“名称”列的表。下面是
ID 名称
0 约翰
1 朱利安
2 卡罗尔
3. 安东尼
4 保罗
五 克里斯
6 鲍勃
然后我创建一个新表“Sorted”。它只有一个列“Name”。我在设计视图中创建它,保存时我没有创建主键。
然后使用工具> SQL ...我运行这些命令
插入“已排序”,从“数据”中选择“名称”,按“名称”升序排序;
修改表“已排序”,在“名称”前添加列“项目”INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1)
我明白了
项目名
1 安东尼
2 鲍勃
三 卡罗尔
四 克里斯
约翰五书
6 朱利安
7 保罗
这正是我想要的。
如果我向“数据”表添加更多行,并想要重新创建“排序”表,我需要运行这些 SQL 命令
从“已排序”中删除;
更改表“已排序”删除列“项目”;
插入“已排序”,从“数据”中选择“名称”,按“名称”升序排序;
修改表“已排序”,在“名称”前添加列“项目”INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1)
答案2
另一个解决方案是按照这篇文章中的说明进行操作
https://forum.openoffice.org/en/forum/viewtopic.php?f=83&t=61183
这是关于升级到较新的 HSQL 引擎版本,而不是与 OpenOffice Base 捆绑的版本。新的 HSQL 引擎支持 ROWNUM()、ROW_NUMBER() OVER、ANSI SQL 构造等。
答案3
如果您尝试创建一个包含连续数字的新列:
这在计算中有效,我错过了你在基础中工作
- 创建新列
- 在第一个单元格中输入起始数字(大多数情况下为 #1)
- 离开牢房并返回牢房
- 该单元格将有一个实心黑色边框,右下角有一个方形黑色按钮
- 用鼠标单击此按钮并将其向下拖动到所需的位置,以创建所需的所有数字
我希望这就是你正在寻找的
威廉
答案4
使用“<=”连接条件和 count() group by 的自连接可以完成这项工作。以下查询返回相同的结果。
SQL> 从(从 t 中选择 * 按 b 空值优先排序)t 中选择 rownum,t。
SQL> 从 t t1、t t2 中选择 count(t1.n) 作为 rownum、t2.n、t2.a、t2.b,其中 nvl(t1.b,' ') < nvl(t2.b,' ') 或 nvl(t1.b,' ') = nvl(t2.b,' ') 且 t1.n <= t2.n 按 t2.n、t2.a、t2.b 分组,按 1 排序;
ROWNUM N A B
1 1004 ddd
2 1003 ccc --
3 1002 bbb MM
4 1001 aaa NN
已选择 4 行。