为表的子集生成序列
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()
【讨论】:
以上是关于为表的子集生成序列的主要内容,如果未能解决你的问题,请参考以下文章