0

如果重复相同的数据,我需要为行提供行号值

输入

create table test(id int,name varchar(10),sal int)
insert test values(101,'hdfc',15000)
insert test values(101,'hdfc',15000)
insert test values(101,'hdfc',15000)
select id+name+sal from test

预期输出:

lineno:1 101,hdfc,15000
lineno:2 101,hdfc,15000
lineno:3 101,hdfc,15000

如果插入了新记录,那么它应该从lineno1 ex 开始:

lineno:1 101,IDBI,15000

注意: lineno 是硬编码值,但数字应该增加。

4

1 回答 1

0

CTE使用and试试这个Row_number():(假设您需要单列中的结果,否则请删除 CTE 中的字符串连接)

;with cte as (
    select id, 
      convert(varchar(10), id) +', '+ name +', '+ convert(varchar(10), sal) cols,
      row_number() over(partition by id,name, sal order by id) rn
    from test
)
select 'lineno:' + convert(varchar(10), rn) + ' ' + cols as mystring
from cte
order by id

SQL 小提琴示例

|                  MYSTRING |
-----------------------------
| lineno:1 101, hdfc, 15000 |
| lineno:2 101, hdfc, 15000 |
| lineno:3 101, hdfc, 15000 |
| lineno:1 101, IDBI, 15000 |
于 2013-06-11T12:10:30.730 回答