如果重复相同的数据,我需要向行提供行号值
输入
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
开始
例如:
lineno:1 101,IDBI,15000
注意:lineno是硬编码值,但数字应该增加。
答案 0 :(得分:0)
使用CTE
和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 Fiddle Example 强>
| MYSTRING |
-----------------------------
| lineno:1 101, hdfc, 15000 |
| lineno:2 101, hdfc, 15000 |
| lineno:3 101, hdfc, 15000 |
| lineno:1 101, IDBI, 15000 |