ROW_NUMBER над новым столбцом - PullRequest
       23

ROW_NUMBER над новым столбцом

1 голос
/ 16 августа 2011

Можно ли заказать по новому столбцу внутри row_number?Я хотел бы сделать что-то вроде этого:

select text1 + text2 as NEW_TEXT, row_number over (order by NEW_TEXT) from table

, но такая сортировка не работает (я получаю случайные результаты).

Ответы [ 4 ]

8 голосов
/ 16 августа 2011

Вы должны повторить выражение text1 + text2

select text1 + text2 as NEW_TEXT, 
row_number() over (order by text1 + text2)
from table

Или сделать это поэтапно (здесь может быть CTE)

SELECT
    NEW_TEXT,
    row_number() over (order by NEW_TEXT)
FROM
    (
    select text1 + text2 as NEW_TEXT from table
    ) foo
1 голос
/ 16 августа 2011

Вы можете сделать это, используя подзапрос следующим образом:

select NEW_TEXT, row_number() over (order by NEW_TEXT)
from
(
    select Text1 + Text2 as NEW_TEXT
    from TestTable
) TempTable
1 голос
/ 16 августа 2011

Другой вариант - заключить исходные результаты в подвыбор и применить ROW_NUMBER к этому отбору.

Оператор SQL

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         
0 голосов
/ 30 марта 2014
select text1 + text2 as NEW_TEXT, 
row_number over (order by text1 + text2) 
from table
...