DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) SELECT @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(ItemId) FROM CUSTOMER_ORDER FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') SELECT @query = 'SELECT * FROM (SELECT CUSTOMER_NUMBER, ItemId, 1 as INTC FROM CUSTOMER_ORDER)X PIVOT ( COUNT(INTC) for ItemId in (' + @cols + ') ) P' EXEC SP_EXECUTESQL @query