我在报告中有要求在行中显示备用颜色,为此,我需要在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
最佳答案
如果您的数据库支持分析功能,则无需避免使用分析功能,例如ROW_NUMBER()
SELECT
ROW_NUMBER() OVER (ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) AS Number
FROM
[<TABLE_NAME>]
语法为
Func([ arguments ]) OVER (analytic_clause)
,您需要关注OVER()。最后的括号构成行的分区,并将Func()逐一应用于这些分区。在上面的代码中,我们只有一组行/分区。因此,生成的序列适用于所有行。您可以一次性创建多组数据,并为每个数据生成序列号。例如,如果您需要为所有具有相同categoryId的行集生成序列号。您只需要添加像
Partition By
这样的(PARTITION BY categoryId ORDER BY [<PRIMARYKEY_COLUMN_NAME>])
子句。请记住,在
FROM
之后,您还可以使用另一个额外的ORDER BY
对数据进行不同的排序。但这对OVER()没有影响关于sql - 如何在SQL中生成顺序行号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26160970/