是否可以按 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
select text1 + text2 as NEW_TEXT,
row_number over (order by text1 + text2)
from table