2011-07-07 1 views
0

いくつかの列を除いてすべての値が同じであれば、値が返されるストアドプロシージャを作成しようとしています。 SPは、2つの行の間に異なる値を持つ列を持つ単一の行を返す必要があります。コンマで区切られた行にマージされます。例:SPを実行すると、以下のような2行が返されます。両方の行にはすべての列がありますが、類似しています。コンマ区切り文字を使用して複数の行が返された場合、SQLストアドプロシージャの出力を1行に結合します。

col1    col2 col3    col4     col5 col6   col7 
------------------ ------ ------------------ ----------------------- ----- ------------ -------------- 
Remote Observation sdgfdg Remote Observation 2011-07-21 00:00:00.000 14.00 Inbound Call Order 
Remote Observation sdgfdg Remote Observation 2011-07-21 00:00:00.000 14.00 Inbound Call Status Inquiry 

今私の所望の出力は

col1    col2 col3    col4     col5 col6   col7 
------------------ ------ ------------------ ----------------------- ----- ------------ --------------------- 
Remote Observation sdgfdg Remote Observation 2011-07-21 00:00:00.000 14.00 Inbound Call Order, Status Inquiry 

誰かがこれを達成する方法を知っているんです。

+1

エディタツールバーの "コードサンプル"ボタン( '{}')を使ってきれいに書式を設定し、構文を強調表示することができます! –

答えて

1

行を文字列に連結する方法は数多くあります。ここでは一つの方法です:)

あなたはで詳細を読むことができます:あなたは、コード、XMLまたはデータサンプルを投稿する場合は、** **テキストエディタでそれらの行をハイライト表示し、 "をクリックしてくださいhttp://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

DECLARE @TestTable TABLE (
    col1 varchar(50), 
    col2 varchar(50), 
    col3 varchar(50), 
    col4 varchar(50), 
    col5 varchar(50), 
    col6 varchar(50), 
    col7 varchar(50) 
) 

insert into @TestTable 
values 
('Remote Observation','sdgfdg','Remote Observation','2011-07-21 00:00:00.000 ','14.00','Inbound Call','Order'), 
('Remote Observation','sdgfdg','Remote Observation','2011-07-21 00:00:00.000 ','14.00','Inbound Call','Status Inquiry'), 
('Remote Observation','sdgfdg','Remote Observation','2011-07-21 00:00:00.000 ','14.00','Inbound Call','Status Inquiry') 


select col1,col2,col3,col4,col5,col6,LEFT(col7,LEN(col7)-1) col7 
from 
(
    select col1,col2,col3,col4,col5,col6, 
    ( 
     select distinct col7 + ',' 
     from @TestTable t2 
     where t2.col1 = t1.col1 
     AND t2.col2 = t1.col2 
     AND t2.col3 = t1.col3 
     AND t2.col4 = t1.col4 
     AND t2.col5 = t1.col5 
     AND t2.col6 = t1.col6 
     for xml path('') 
    ) col7 
    from @TestTable t1 
    group by col1,col2,col3,col4,col5,col6 
) source 
関連する問題