No sample data was provided for the dates and so I omitted the WHERE clause conditions testing those values.-- The primary key was omitted for brevity.CREATE TABLE CallTable(Number INTEGER,SignalCode NVARCHAR(1))INSERT INTO CallTableSELECT 64566, 'U' UNION ALLSELECT 64566, 'U' UNION ALLSELECT 62358, 'C' UNION ALLSELECT 95431, 'C' UNION ALLSELECT 45686, 'D' UNION ALLSELECT 45686, 'C' SELECT C1.Number ,COUNT(C1.Number) ,SUM(CASE WHEN C1.SignalCode = 'U' THEN 1 ELSE 0 END) AS [U SignalCode] ,SUM(CASE WHEN C1.SignalCode = 'C' THEN 1 ELSE 0 END) AS [C SignalCode] ,SUM(CASE WHEN C1.SignalCode = 'D' THEN 1 ELSE 0 END) AS [D SignalCode] ,CAST((SUM(CASE WHEN C1.SignalCode = 'U' THEN 1.0 ELSE 0.0 END) + SUM(CASE WHEN C1.SignalCode = 'D' THEN 1.0 ELSE 0.0 END)) / CAST(COUNT(C1.Number) AS DECIMAL(18,2)) * 100 AS DECIMAL(18,2)) AS [Failure Percentage] FROM CallTable AS C1GROUP BY C1.NumberDROP TABLE CallTable/*Number Total No Calls U SignalCode C SignalCode D SignalCode Failure Percentage----------- -------------- ------------ ------------ ------------ -------------------45686 2 0 1 1 50.0062358 1 0 1 0 0.0064566 2 2 0 0 100.0095431 1 0 1 0 0.00*/