1

重複の可能性:
行の値を連結するT-SQL

私はSQLServerを初めて使用し、一時変数やXMLパスなどを使用するなど、インターネットから提案されたいくつかの手法を試しましCOALESCEたが、いずれも私の要件を満たしていません。

Toad for SQL Serverバージョン5.5を使用してSQLスクリプトを作成していますが、DBサーバーのクエリに使用したアカウントは読み取りアクセスのみを取得しました。したがって、CREATE VIEW私が信じるステートメントを使用することはできません。

テーブル名:Customer

ServerName  Country  contact
----------  -------  -------------
srv1        SG       srv1_contact1
srv1        SG       srv1_contact2
srv1        SG       srv1_contact3
srv2        HK       srv2_contact1
srv2        HK       srv2_contact2
srv3        JP       srv3_contact1
srv3        JP       srv3_contact2
srv3        JP       srv3_contact3
srv4        KR       srv4_contact1

期待される出力:

ServerName  Country  contact
----------  -------  -------------------------------------------
srv1        SG       srv1_contact1; srv1_contact2; srv1_contact3
srv2        HK       srv2_contact1; srv2_contact2
srv3        JP       srv3_contact1; srv3_contact2; srv3_contact3
srv4        KR       srv4_contact1
4

1 に答える 1

7
SELECT ServerName, Country, contact = STUFF((SELECT '; ' 
    + ic.contact FROM dbo.Customer AS ic
  WHERE ic.ServerName = c.ServerName AND ic.Country = c.Country
  FOR XML PATH(''), TYPE).value(N'./text()[1]', N'nvarchar(max)'), 1, 2, '')
FROM dbo.Customer AS c
GROUP BY ServerName, Country
ORDER BY ServerName;
于 2012-06-27T16:18:50.820 に答える