如何在tsql中生成顺序行号?

man*_*ddy 7 sql t-sql sql-server-2008

我在报告中要求在行中显示备用颜色,为此我需要在SQL Select语句中生成序列号(请参阅下面的示例),以便稍后在显示行时使用.我正在尝试row_number和其他一些不起作用的技术.这不应该使用脚本完成,我应该能够在Select语句中生成.感谢任何帮助.

RowNumber - 1, Otherdata - Something1
RowNumber - 2, Otherdata - Something2
RowNumber - 3, Otherdata - Something3
RowNumber - 4, Otherdata - Something4
RowNumber - 5, Otherdata - Something5
Run Code Online (Sandbox Code Playgroud)

Waq*_*qar 10

如果您的数据库支持分析函数,则无需避免使用分析函数,例如ROW_NUMBER()

    SELECT
        ROW_NUMBER() OVER (ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) AS Number
    FROM
        [<TABLE_NAME>]
Run Code Online (Sandbox Code Playgroud)

语法是Func([ arguments ]) OVER (analytic_clause)你需要关注OVER().最后一个括号创建行的分区,并逐个在这些分区上应用Func().在上面的代码中,我们只有一组行/分区.因此,生成的序列适用于所有行.

您可以制作多组数据,并在一次运行中为每个数据生成序列号.例如,如果您需要为具有相同categoryId的所有行集生成序列号.你只需要添加这样的Partition By子句(PARTITION BY categoryId ORDER BY [<PRIMARYKEY_COLUMN_NAME>]).

请记住,在FROM您还可以使用其他额外内容ORDER BY对数据进行不同的排序之后.但它对OVER()没有影响