0

重複の可能性:
MS SQL Server2005でgroup_concatMySQL関数をシミュレートしますか?

ServiceEntryPartつまり、との2つのテーブルがありPartます。1つのサービスエントリに複数の部分を含めることができます。私がやろうとしているのは、同じサービスエントリに対して異なる部分を連結することです。私が探している最後のエントリは、以下のようなものを持つことです。」

 ServiceEntryID     PartDescription
       3            2 ~ xyz Manager | 3 ~ Elevator

列パーツの説明では、最初にチルダ、パーツの説明、パイプ文字の順にパーツIDを使用し、serviceentryパーツのさまざまなパーツに同じ形式を使用することで、さまざまなパーツIDを1つの列に連結します。どんな助けでも適用されるでしょう。ありがとう

以下の構造を見つけてください

dbo.ServiceEntryPart
ID   ServiceEntryID   PartID
266  2                1
234  3                2
234  3                3
233  5                4

dbo.Part
ID  PartDescription   
1   Sample Manager
2   xyz Manager
3   Elevator
4

3 に答える 3

1
SELECT ServiceEntryID, PartDescription = 
    STUFF((SELECT ' | ' + CAST(b.ID AS NVARCHAR) + ' ~ ' + PartDescription
           FROM Part b
            INNER JOIN ServiceEntryPart c
                ON c.PartId = b.ID
           WHERE c.ServiceEntryID = a.ServiceEntryID
           FOR XML PATH('')), 1, 3, '')
FROM ServiceEntryPart a
GROUP BY ServiceEntryID
于 2012-07-19T22:11:58.013 に答える
0

次のURLでは、このジョブを実行するための多くのメソッドを見つけることができます。そのチュートリアルで説明されているブラックボックスXMLメソッドを使用することをお勧めします。これが最も簡単な方法です。

Transact-SQLでの行値の連結

このようなもの...

SELECT dbo.ServiceEntryPart.ServiceEntryID,
   ( SELECT dbo.Part.ID + '~' + dbo.Part.PartDescription + ','
       FROM dbo.Part
      WHERE dbo.ServiceEntryPart.PartID = dbo.Part.ID
      ORDER BY dbo.Part.ID
        FOR XML PATH('') ) AS PartDescription
  FROM dbo.ServiceEntryPart
  GROUP BY dbo.ServiceEntryPart.ServiceEntryID
于 2012-07-19T22:11:49.680 に答える
0

http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

于 2012-07-19T22:04:01.823 に答える