-2

可能重复:
SQL Server 中的 Concat 组

请看下面的表结构:

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。我还没有找到解决方案。与一个人有关的犯罪数量是未知的。

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 回答