我需要在报告中显示行中的备用颜色,为此,我需要在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发布于 2014-11-26 21:35:51
如果您的数据库支持分析函数,则无需避免使用它们,例如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 categoryId ORDER BY [<PRIMARYKEY_COLUMN_NAME>])的Partition By子句。
记住,在FROM之后,您还可以使用另一个额外的ORDER BY来以不同的方式对数据进行排序。但是它对OVER ()没有影响。
发布于 2014-10-02 20:47:21
如果排序列包含唯一值,也可以不使用新的内置Row_Number()函数,而是使用基于排序列的子查询。
Select [other stuff],
(Select count(*) From table
where sortCol < a.sortCol) rowNum
From table a
Order by sortCol将<更改为<=以从1开始计数,而不是从0开始计数
https://stackoverflow.com/questions/26160970
复制相似问题