日期:2014-05-18  浏览次数:20521 次

在SqlServer2008(查询)中,如何把同列同值的数据中,添加一个字段表示成第几行?
ID Code
------ --------
1 123
2 123
4 123
6 1234
7 1234
如上是原始表的数据。下面就是要查询出来的效果:
ID Code Row
------- ------- -----------
1 123 1
2 123 2
4 123 3
6 1234 1
7 1234 2
如上是要实现的效果,也就是说把Code字段相同的值,进行自己的行标识。

望高手指教......

------解决方案--------------------
SQL code

--> 测试数据:[tbl]
if object_id('[tbl]') is not null drop table [tbl]
create table [tbl]([ID] int,[Code] int)
insert [tbl]
select 1,123 union all
select 2,123 union all
select 4,123 union all
select 6,1234 union all
select 7,1234
--2005以上版本
select *,
ROW_NUMBER()over(partition by [Code] order by getdate())as row_num
from tbl
--2000版本
select *,
row_num=(select COUNT(*) from tbl a 
where a.Code=b.Code and a.ID<=b.ID) from tbl b
/*
ID    Code    row_num
1    123    1
2    123    2
4    123    3
6    1234    1
7    1234    2
*