Если вы знаете цвета во время разработки, вы можете использовать сводку.
DECLARE @t TABLE
(
personName NVARCHAR(16) NOT NULL,
carColor NVARCHAR(16) NOT NULL
);
INSERT INTO @t
(
personName,
carColor
)
VALUES
('mike', 'green'),
('mike', 'blue'),
('mike', 'red'),
('bob', 'green'),
('bob', 'red'),
('tom', 'blue');
SELECT t.personName,
t.red,
t.blue,
t.green
FROM
(
SELECT pvt.*
FROM @t t
PIVOT
(
COUNT(carColor)
FOR carColor IN ([green], [blue], [red])
) pvt
) AS t;
Выход:
bob 1 0 1
mike 1 1 1
tom 0 1 0