2016-05-20 3 views
-2

私は2つの列を持つテーブルテストを持っています。行の値をSQLの列として取得する方法は?

Id Value 
1 A 
1 B 
1 C 

私はSQL Serverでこれを行ってはどうすればよい

Id Value1 Value2 value3 
1  A  B  C 

、以下のような結果を取得したいです。

+0

これは何時でも何時でも答えられています。新しい質問を投稿する前にそのような質問を見てください。 –

+0

あなたは、文字通りあなたの投稿タイトルを持って、Googleに入れて、最初のリンクをクリックすることができます。 – dfundako

答えて

1

これはピボットですが、ピボットの列はありません。 row_number()がそれを提供することができます。私は通常このために条件付き集計を使用します。

select id, 
     max(case when seqnum = 1 then value end) as value1, 
     max(case when seqnum = 2 then value end) as value2, 
     max(case when seqnum = 3 then value end) as value3 
from (select t.*, 
      row_number() over (partition by id order by (select null)) as seqnum 
     from t 
    ) t 
group by id; 

SQLテーブルが順序付けられていないセットを表すことに注意してください。したがって、注文に関する情報はなく、値は任意の順序で指定できます。列で注文が指定されている場合は、select nullではなく、order byに含めます。

関連する問題