私は以下のようなテーブルを持っています、
私たちが "n"列をチェックすると、その二重同じ質問がansSecIDで区切られた複数の回答で繰り返されます。
QuestionId + AnsSecId = unique row
作成することはできますか rank()
"n"の列。 e.g. n = 8, has 2 rows. So i want 8_1, 8_2.
または
for n = 17, can I get 17_1,17_2,17_3
または何かのような rank()
カラム。 some 1,2,3 row no
。 for repetitive n.
1つの質問に対して最大3つの回答があります。
回答:
回答№1は2このようなもの:
select (cast(n as varchar(255)) +
(case when count(*) over (partition by n) > 1
then "_" + cast(row_number() over (partition by n order by anssecid) as varchar(255))
else ""
end)
) as new_n
実際、あなたの repeat
コラムは when
:
select (cast(n as varchar(255)) +
(case when repeat > 0
then "_" + cast(row_number() over (partition by n order by anssecid) as varchar(255))
else ""
end)
) as new_n
回答№2については2
これを試して、私はコンピュータ上ではないが、これは動作するはずです。パーティションにnを使用することもできます
select Cast (n as varchar)+"-"+cast (r as varchar) str
from (
Select n, row_number() over (partition by q_id order by anssecid) r
from table
) x