SQL Server Stuff基于条件

时间:2018-03-13 19:42:02

标签: sql sql-server sql-server-2008

这是我目前的表格。

ImageID    Brand     Segment
101        Kitkat     Biscuit
101        Galaxy     Biscuit
102        Kitkat     Chocolate
102        Kitkat     Chocolate
103        Kitkat     Chocolate
103        Twix       Ice Cream

我想要的表

ImageID    Brand             Segment
101        Kitkat,Galaxy     Biscuit
102        Kitkat            Chocolate
103        Kitkat, Twix      Chocolate, Ice Cream

我试图按ImageID分组。以这种方式,如果ImageID有多个记录。然后 BrandSegment将成为东西,但不会重复[参考:102,Kitkat&巧克力一词没有重复]

提前致谢。

1 个答案:

答案 0 :(得分:5)

STUFF是一种常见的SQL Server方法:

SELECT T.ImageID,
       STUFF((SELECT DISTINCT ',' + Brand
             FROM yourTable T2
             WHERE T2.ImageID= T.ImageID
             FOR XML PATH ('')),1,1,'') Brand,
       STUFF((SELECT DISTINCT ',' + Segment
             FROM yourTable T2
             WHERE T2.ImageID= T.ImageID
             FOR XML PATH ('')),1,1,'') Segment
FROM yourTable T
GROUP BY T.ImageID