2016-06-30 14 views
2

Iは以下のように結果セットを有する、は、1行に2行を結合 - Sybaseの

id fname lname 
11 Tom Jerry 
11 Tom Harry 

私は1行に行の両方をマージすることができ、及びLNAME値がカンマ区切りとマージ方法があります。以下のように、

11 Tom Jerry,Harry 

乾杯!

答えて

1

これを行うには、StuffといくつかのXMLが機能します。編集:SYBASEでテストが、それをやってみると

テストデータ

CREATE TABLE #TestData (id int, fname varchar(20), lname varchar(20)) 
INSERT INTO #TestData 
VALUES 
(11,'Tom','Jerry') 
,(11,'Tom','Harry') 

クエリ

SELECT 
a.id 
,a.fname 
,STUFF((SELECT ',' + b.lname 
     FROM #TestData b 
     WHERE b.id = a.id 
     FOR XML PATH('')), 1, 1, '') lname 
FROM #TestData a 
GROUP BY a.id, a.fname 

結果に

id fname lname 
11 Tom  Jerry,Harry 
+0

'FOR XML PATH'はSybaseで利用できますか? –

+0

わからない、私は元の質問のその部分を逃した。これはSQL Server上で試された方法ですが、私は恐れているsybase devシステムにアクセスできません。 –

+0

とにかく努力してくれてありがとう。同じことをするGROUP_CONCATもsybaseでは使用できません。悲しい!! –

0

の手順を参照されない:(擬似コード)

1 - 基本テーブルを取得するid、fnameで順番にデータ

2 - カーソルの各行を処理し、id以下に論理以下で使用すると、fnameの値は変更された後も同じになり、新しい値のセット(id、fname )カンマ区切りの姓で追加されました

BEGIN 
    SET @List = @List + ',' + Cast(@lname As varchar(10)) 
END 
関連する問題