How to create a separate column for each color if at least one value exists in a group by clause? Does each color column need a separate select statement with group by clause. Thanks in advance.
For example
SELECT COUNT(ColorID) AS IcdCodecount, Colorname -- Blue -> if at least one value exists in 1, 10, 12 -- Red -> if at least one value in 0, 3, 4, 15 -- White -> if at least one value in 11, 12, 13, 14 -- Yellow -> if at least one value in 20, 21, 22, 23 FROM TestTable WHERE ColorID IN ( 1, 10, 12, -- blue 0, 3, 4, 15, -- Red 11, 12, 13, 14, -- White 20, 21, 22, 23, -- yellow) GROUP BY Colorname
Advertisement
Answer
You can use conditional aggregation:
(case when sum(case when colorId in (1, 10, 12) then 1 else 0 end) > 0 then 1 else 0 end) as is_blue, (case when sum(case when colorId in (0, 3, 4, 15) then 1 else 0 end) > 0 then 1 else 0 end) as is_red, (case when sum(case when colorId in (11, 12, 13, 14) then 1 else 0 end) > 0 then 1 else 0 end) as is_white, (case when sum(case when colorId in (20, 21, 22, 23) then 1 else 0 end) > 0 then 1 else 0 end) as is_yellow