DECLARE @Data AS TABLE( StoreName varchar(50) NOT NULL, Category varchar(50) NOT NULL, Product varchar(50) NOT NULL, Color varchar(50) NOT NULL, PRIMARY KEY (StoreName, Category, Product, Color));INSERT @Data (StoreName, Category, Product, Color)VALUES ('My Store', 'Clothing', 'Awesome Shirt', 'White'), ('My Store', 'Clothing', 'Awesome Shirt', 'Green'), ('My Store', 'Clothing', 'Awesome Shirt', 'Blue'), ('My Store', 'Cars', 'Chevy Impala', 'White'), ('My Store', 'Cars', 'Chevy Impala', 'Black'), ('My Store', 'Cars', 'Chevy Impala', 'Grey');
SELECT d.StoreName, d.Category, d.Product, Colors = ( SELECT d2.Color AS [text()] FROM @Data AS d2 WHERE d2.StoreName = d.StoreName AND d2.Category = d.Category AND d2.Product = d.Product ORDER BY d2.Color FOR XML PATH (''), TYPE ).value('.[1]', 'varchar(MAX)')FROM @Data AS dGROUP BY d.StoreName, d.Category, d.ProductORDER BY d.StoreName, d.Category, d.Product;
.value('.[1]', 'varchar(MAX)')
d2.Color AS [text()]
d2.Color AS [data()]