sql >> データベース >  >> RDS >> Sqlserver

tsqlで連続した行番号を生成するには?

    データベースが分析関数をサポートしている場合は、分析関数を避ける必要はありません。例:ROW_NUMBER()

        SELECT
            ROW_NUMBER() OVER (ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) AS Number
        FROM
            [<TABLE_NAME>]
      

    構文は Func([ arguments ]) OVER (analytic_clause) です。 OVER () に注目する必要があります。この最後の括弧は、行のパーティションを作成し、これらのパーティションに Func() を 1 つずつ適用します。上記のコードでは、行のセット/パーティションが 1 つしかありません。したがって、生成されたシーケンスはすべての行用です。

    複数のデータセットを作成し、それぞれのシーケンス番号を一度に生成できます。たとえば、同じカテゴリ ID を持つすべての行セットのシーケンス番号を生成する必要がある場合。 Partition By を追加するだけです このような句 (PARTITION BY categoryId ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) .

    FROM の後に注意してください 別の追加の ORDER BY を使用することもできます データを別の方法で並べ替えます。ただし、OVER () には影響しません



    1. Excelで小数点以下の桁数が最も多いものを見つける方法はありますか

    2. C#OracleDBへの接続DateTimeフォーマット

    3. 列のすべての値を小文字に更新します

    4. クエリで間隔を指定してprepareStatementを使用するとエラーが発生する