1

row_number 内の新しい列で注文することは可能ですか? 私はこのようなことをしたいと思います:

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

しかし、そのようなソートは機能しません (ランダムな結果が得られます)。

4

4 に答える 4

8

式を繰り返す必要があります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
于 2011-08-16T10:05:26.523 に答える
1

次のようにサブクエリを使用して実行できます。

select NEW_TEXT, row_number() over (order by NEW_TEXT)
from
(
    select Text1 + Text2 as NEW_TEXT
    from TestTable
) TempTable
于 2011-08-16T10:07:03.947 に答える
1

別のオプションは、最初の結果を副選択でラップし、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         
于 2011-08-16T10:05:59.210 に答える