varchars 型の行の値を任意の区切り記号で単一の列に変換するクエリを教えてください。例: 2 列のテーブル
col1 |col2
1 | m10
1 | m31
2 | m20
2 | m50
今、私は出力したい
col1| col2
1|m10:m31
2|m20:m50
varchars 型の行の値を任意の区切り記号で単一の列に変換するクエリを教えてください。例: 2 列のテーブル
col1 |col2
1 | m10
1 | m31
2 | m20
2 | m50
今、私は出力したい
col1| col2
1|m10:m31
2|m20:m50
あなたはいつもマッチしたペアを持っていますか、それ以上でもそれ以下でもありませんか?
select
col1,
count(*)
from table
group by col1
having count(*) <> 2
結果はゼロになりますか?
もしそうなら、あなたはただ自己参加することができます...
declare @delimiter varchar(1)
set @delimiter = :
select
t1.col1, t1.col2 + @delimiter + t2.col2
from tablename t1
inner join tablename t2
on t1.col1 = t2.col1
and t1.col2 <> t2.col2
このソリューションを使用してください:
SELECT list(col2, ':') as col2 FROM table_name group by col1 ;
これを行う 1 つの方法は、カーソルを使用することです。
カーソルを使用すると、一度に行をフェッチできます!
擬似コードは次のようになります。
if actual_col1 = last_col1
then col2_value = col2_value + actual_col2
else
insert into #temptable value(col1, col2_value)
col2_value = actual_col2
end
それらの使用方法については、こちらをご覧ください。