クエリにエラーが含まれています: エイリアス "ja" が定義されていません。
次のようにしてみてください。
SELECT
( SELECT COUNT(*) + 1
FROM "table"
WHERE title < t.title OR (title = t.title AND id<t.id)
) as rowIndex,
t.title
FROM "table" t
ORDER BY t.title;
ただし、このサブクエリの構築はうまくスケーリングできないことに注意してください。大規模なデータセットの場合は、一時テーブルを作成し、代わりに ROWID を使用することができます (たとえば、 ここで説明されているように)。
編集:
COLLATE NOCASE でテスト:
CREATE TABLE "table" (id INTEGER, title TEXT COLLATE NOCASE);
INSERT INTO "table" VALUES
(1, "Book A"),
(2, "Book b"),
(3, "Book C"),
(4, "Book B"),
(5, "Book a");
クエリは次のようになります。
1|Book A
2|Book a
3|Book b
4|Book B
5|Book C
編集:
列 COLLATE NOCASE を宣言したくない場合は、ORDER BY 部分とサブクエリで COLLATE を使用していることを確認する必要があります。
SELECT
( SELECT COUNT(*) + 1
FROM "table"
WHERE title < t.title COLLATE NOCASE OR (title = t.title COLLATE NOCASE AND id<t.id)
) as rowIndex,
t.title
FROM "table" t
ORDER BY t.title COLLATE NOCASE;