如何在SQL Server中创建rownum

时间:2010-12-16 00:59:41

标签: sql sql-server sql-server-2005 tsql

以下是我想要做的示例:

declare @table table(col1 varchar(10),col2 varchar(10));
insert into @table(col1,col2) values ('a1','5340');
insert into @table(col1,col2) values ('a1','3340');
insert into @table(col1,col2) values ('a1','9185340');
insert into @table(col1,col2) values ('b1','1110');

这是一个表格和示例数据。现在我想要的结果如下:

select * from @table

col1    col2      seq
a1  5340       1
a1  3340       2
a1  9185340    3
b1  1110       1

如果您在此处注意到,则对于COL1的新值,SEQ将再次重置为1。而且我不想改变COL2中的值顺序。即。值5340应为1,依此类推。

这只是一个示例数据。但实际数据来自另一个表,因此值不会固定为仅4行。

任何帮助将不胜感激。 谢谢

2 个答案:

答案 0 :(得分:4)

只需使用常规IDENTITY列作为SEQ:

declare @table table(raw_seq int IDENTITY(1,1), col1 varchar(10),col2 varchar(10));

然后使用

ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY raw_seq) AS seq

为了获得你想要的价值。

答案 1 :(得分:1)

使用row_number()分析函数。

select
  col1,
  col2,
  row_number() over (partition by col1 order by col1) seq
from
  table