-2

重複の可能性:
SQL Server の連結グループ

以下のテーブル構造を見てください。

CREATE TABLE Person (ID INT, Name varchar(30), primary key(ID))
CREATE TABLE Warnings (ID INT, PersonID INT, Description VARCHAR(100), FOREIGN KEY (PersonID) REFERENCES Person(ID))

INSERT INTO Person (1,'Robert')
INSERT INTO Person (2,'Maria')

INSERT INTO Warnings (1,1,'Spitting')
INSERT INTO Warnings (2,1,'Punching')
INSERT INTO Warnings (3,1,'Pinching')

INSERT INTO Warnings (4,2,'Offenive words')
INSERT INTO Warnings (5,2,'Lateness')

私は次のような出力を得ようとしています:

Name    Offences
Robert  Spitting,Punching, Pinching
Maria   Offensive words, Lateness

ピボット テーブルと次の関数を見てきました: STUFF と QUOTENAME。私はまだ解決策を発見していません。1 人に関連する犯罪の数は不明です。

4

1 に答える 1

3
SELECT
     a.[Name],
     STUFF(
         (SELECT ',' + [Description]
          FROM Warnings
          WHERE [PersonID] = a.[ID]
          FOR XML PATH (''))
          , 1, 1, '')  AS Offences
FROM Person AS a
     INNER JOIN Warnings b
        ON a.ID = b.PersonID
GROUP BY a.ID,a.[Name]
于 2013-01-08T16:00:51.673 に答える