Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como gerar o número de linha sequencial no tsql?


Não há necessidade de evitar funções analíticas se seu banco de dados as suportar, por exemplo, ROW_NUMBER()
    SELECT
        ROW_NUMBER() OVER (ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) AS Number
    FROM
        [<TABLE_NAME>]

A sintaxe é Func([ arguments ]) OVER (analytic_clause) você precisa se concentrar em OVER (). Este último parêntese faz partição(ões) de suas linhas e aplica o Func() nessas partições uma a uma. No código acima, temos apenas um único conjunto/partição de linhas. Portanto, a sequência gerada é para todas as linhas.

Você pode fazer vários conjuntos de seus dados e gerar o número de sequência para cada um de uma só vez. Por exemplo, se você precisar gerar um número de sequência para todo o conjunto de linhas que tenham o mesmo categoryId. Você só precisa adicionar Partition By cláusula como esta (PARTITION BY categoryId ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) .

Lembre-se que depois de FROM você também pode usar outro ORDER BY extra para classificar seus dados de maneira diferente. Mas não tem efeito sobre o OVER()