为表的子集生成序列

Posted

技术标签:

【中文标题】为表的子集生成序列【英文标题】:Generating sequences for subsets of a table 【发布时间】:2009-01-29 16:31:17 【问题描述】:

我在 SqlServer 9 中有一个表格,其中包含表格数据

Code    Number
J       0
J       5
J       8
Y       2
Y       8

我想添加一列,其中包含一个数字,其中包含每个代码的内部数字序列,以便我的表格如下所示;

Code    Number   Seq
J       0        1
J       5        2
J       8        3
Y       2        1
Y       8        2

对于完成此任务的最佳方法,有人有任何建议吗?

【问题讨论】:

【参考方案1】:

查看ROW_NUMBER() 函数。

DECLARE @Number TABLE (
    Code        nvarchar(1)
,   Number      int
)


INSERT @Number VALUES ('J', 0)
INSERT @Number VALUES ('J', 5)
INSERT @Number VALUES ('J', 8)
INSERT @Number VALUES ('Y', 2)
INSERT @Number VALUES ('Y', 8)


SELECT * FROM @Number


SELECT  Code
,       Number
,       ROW_NUMBER() OVER(PARTITION BY Code ORDER BY Code) AS Seq
FROM    @Number

【讨论】:

【参考方案2】:

在在线图书中查找函数 row_number() 和 RANK()

【讨论】:

以上是关于为表的子集生成序列的主要内容,如果未能解决你的问题,请参考以下文章

Oracle数据库中序列(SEQUENCE)的用法详解

Oracle中的序列(Sequence)

Oracle中的序列(Sequence)

Oracle中的序列(Sequence)

Oracle中的序列(Sequence)

数据库中的序列是啥?具体概念?