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 例から開始する必要があります:

lineno:1 101,IDBI,15000

注: lineno はハードコードされた値ですが、数値を増やす必要があります。

4

1 に答える 1

0

CTEandを使用してこれを試してください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 に答える