This should work: -
CREATE TABLE #question (q1 int, q2 int, q3 int) INSERT INTO #question VALUES (1,3,1), (2,1,4), (1,2,1); --unpivot to start with WITH UNPIVOTED AS ( SELECT * FROM (SELECT q1,q2,q3 FROM #question) p UNPIVOT (answer FOR question in (q1,q2,q3)) AS unpvt ) --Then pivot SELECT * FROM (SELECT answer, question FROM unpivoted) p PIVOT ( COUNT(question) FOR question IN (q1,q2,q3) ) as pvt
source share