Я пытаюсь помочь кому-то, кто хочет поместить данные в алфавитном порядке с номером строки. Я думал, что смогу сделать запрос, подобный этому
, выбрав «name», ROWNUM () в качестве «Row» из «data» порядка по «name»
Но я просто получаю «отказано в разрешении» 'ошибка или подобное.
Кто-нибудь может помочь? Работает ли ROWNUM () так, как я думаю? Или есть лучший способ получить номер строки в данных, упорядоченных по имени?
Вот ошибка, которую я получаю:
Доступ запрещен: ROWNUM в операторе [SELECT "Description" , ROWNUM () ИЗ "ДАННЫХ" ЗАКАЗАТЬ "Описание" ASC]
У меня теперь есть использование решения Инструменты> SQL...
Я запускаю с неотсортированной таблицы "Data". Для меня это - просто таблица с автоматически сгенерированным "идентификатором" и столбцом "Name".Вот
Идентификационное название
0 John
1 Julian
2 Carol
3 Anthony
4 Paul
5 Chris
6 Bob
Я затем создаю новую таблицу "Sorted". Это просто имеет отдельный столбец "Имя". Я создаю его в режиме конструктора и когда я сохраняю его, я не создаю Первичный ключ.
Затем с помощью Инструментов> SQL... Я выполняю эти команды
Введите на "Отсортированное" избранное "Имя" от порядка "Данных" "Именем" Asc;
Измените "Отсортированную" Таблицу, добавляют, ЦЕЛОЕ ЧИСЛО столбца "Item", СГЕНЕРИРОВАННОЕ ИДЕНТИФИКАЦИОННЫМИ ДАННЫМИ AS по умолчанию (ЗАПУСТИТЕ С 1) перед "Именем"
Я получаю это
Название товара
1 Anthony
2 Bob
3 Carol
4 Chris
5 John
6 Julian
7 Paul
который является тем, что я хочу.
Если я добавляю больше строк к таблице "Data" и хочу воссоздать таблицу "Sorted", я должен выполнить эти команды SQL
Удалите из "Отсортированного";
Измените Таблицу "Отсортированный" столбец "Item" отбрасывания;
Введите на "Отсортированное" избранное "Имя" от порядка "Данных" "Именем" Asc;
Измените "Отсортированную" Таблицу, добавляют, ЦЕЛОЕ ЧИСЛО столбца "Item", СГЕНЕРИРОВАННОЕ ИДЕНТИФИКАЦИОННЫМИ ДАННЫМИ AS по умолчанию (ЗАПУСТИТЕ С 1) перед "Именем"
Если вы пытаетесь создать новый столбец с последовательными числами:
Это работает в Calc, я пропустил, что вы работаете в базе
Я надеюсь, что это то, что нужно Вы искали
Вильгельма
Самостоятельное соединение с «< =» объединением условий и count () group by может сделать эту работу. Приведенные ниже запросы возвращают тот же результат.
SQL> выбрать rownum, t. * Из (выберите * в порядке t сначала по нулям) t;
SQL> выбрать количество (t1.n) как rownum, t2.n, t2.a , t2.b из t t1, t t2, где 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 выбранных строки.
Еще одним решением было бы следовать инструкциям в этом посте
https://forum.openoffice.org/en/forum/viewtopic.php?f=83&t=61183
Речь идет об обновлении до более новой версии движка HSQL вместо той, которая поставляется в комплекте с OpenOffice Base. Новый движок HSQL обеспечивает поддержку ROWNUM (), ROW_NUMBER () OVER, конструкций ANSI SQL и т. Д.