Можно ли заказать новый столбец внутри row_number? Я хотел бы сделать что-то вроде этого:
select text1 + text2 as NEW_TEXT, row_number over (order by NEW_TEXT) from table
но такая сортировка не работает (я получаю случайные результаты).
Можно ли заказать новый столбец внутри row_number? Я хотел бы сделать что-то вроде этого:
select text1 + text2 as NEW_TEXT, row_number over (order by NEW_TEXT) from table
но такая сортировка не работает (я получаю случайные результаты).
Вы должны повторить выражение text1 + text2
select text1 + text2 as NEW_TEXT,
row_number() over (order by text1 + text2)
from table
Или делайте это поэтапно (здесь foo может быть CTE)
SELECT
NEW_TEXT,
row_number() over (order by NEW_TEXT)
FROM
(
select text1 + text2 as NEW_TEXT from table
) foo
Другим вариантом было бы обернуть ваши первоначальные результаты в подзапрос и применить ROW_NUMBER
к этому подзапросу.
SELECT NEW_TEXT
, ROW_NUMBER() OVER (ORDER BY NEW_TEXT)
FROM (
SELECT text1 + text2 AS NEW_TEXT
FROM [table]
) q
;WITH [table] (text1, text2) AS (
SELECT '1', '1'
UNION ALL SELECT '1', '0'
UNION ALL SELECT '2', '2'
UNION ALL SELECT '2', '1'
)
SELECT NEW_TEXT
, ROW_NUMBER() OVER (ORDER BY NEW_TEXT)
FROM (
SELECT text1 + text2 AS NEW_TEXT
FROM [table]
) q
Вы можете сделать это, используя подзапрос следующим образом:
select NEW_TEXT, row_number() over (order by NEW_TEXT)
from
(
select Text1 + Text2 as NEW_TEXT
from TestTable
) TempTable