2017-04-27 4 views
0

私はSQLクエリで新しいです。私は同じ番号を持っているときにMSSQLの行に参加する方法についての質問があり、注文番号でそれを注文します。おかげMSSQLは同じ番号と順序に基づいて行を結合します

入力:

No  order  Character 
===  ======  ============ 
1  3   A  
1  2   B 
1  1   C 
2  3   D 
2  2   E 
2  1   F 

出力:あなたドン場合

select no, 
     (max(case when [order] = 1 then character else '' end) + 
     max(case when [order] = 2 then character else '' end) + 
     max(case when [order] = 3 then character else '' end) 
     ) 
from t 
group by no; 

No   Character 
========= ============ 
1   CBA 
2   FED 
+0

MySQLでは 'GROUP_CONCAT()'と 'group by'を使用します。 – nogad

答えて

0

あなたは簡単に条件付きの集約を使用することができますSQL Serverのに比べて最大順序を知っている場合それではXMLトリックが必要です:

select no, 
     (select character 
     from t 
     where t.no = n.no 
     for xml path ('') 
     ) as output 
from (select distinct no from t) n; 
+0

私は1つのテーブルしか使用しませんでしたが、コードに2つのテーブル" t.no = n.no "テーブルtとテーブルnがあります。 – rizal

+0

@rizal。 。 。 'n'は別のテーブルではなくサブクエリのエイリアスです。 –

+0

'plath'およびn – rizal

関連する問題