1

varchars 型の行の値を任意の区切り記号で単一の列に変換するクエリを教えてください。例: 2 列のテーブル

col1 |col2
1 | m10
1 | m31
2 | m20
2 | m50

今、私は出力したい

col1| col2
1|m10:m31
2|m20:m50
4

4 に答える 4

1

あなたはいつもマッチしたペアを持っていますか、それ以上でもそれ以下でもありませんか?

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
于 2012-08-08T06:40:38.067 に答える
0

このソリューションを使用してください:

SELECT list(col2, ':') as col2 FROM table_name group by col1 ;

于 2014-10-19T16:24:16.973 に答える
0

これを行う 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

それらの使用方法については、こちらをご覧ください。

于 2012-04-16T09:15:39.367 に答える