/* create table Fruits ([Date] date, Apple int, Kiwi int, Grape int, Orange int, Banana int) insert Fruits values ( '2022-06-10', 2, 2, 4, 3, 1), ( '2022-06-11', 3, 2, 5, 2, 1) select * from Fruits */ declare @cols varchar(max) = stuff((select ', ' + quotename(c.name) from sys.columns c inner join sys.tables t on t.object_id = c.object_id where t.name = 'Fruits' and c.name != 'Date' order by c.column_id for xml path('')), 1, 2, '') declare @sql varchar(max) = concat(' declare @sql varchar(max) = concat(''select [Date]'', ( select '','' + fr from ( select fr from Fruits f unpivot (c for fr in (', @cols, ')) u group by fr having count(distinct c) > 1) t for xml path('''')), '' from Fruits'') exec (@sql) ') exec (@sql) /* Output: Date Apple Grape Orange 2022-06-10 2 4 3 2022-06-11 3 5 2 */