Начните с создания функции, которая возвращает номер проекта. Я сделал это, найдя первое целое число, а затем позицию пробела после него, а затем отсчитав 8 символов, у вас есть начальная и конечная позиции.
CREATE FUNCTION GetProjectNumber(@FullErrorMessage varchar(100))
RETURNS CHAR(8)
AS
BEGIN
DECLARE @ProjectNumber CHAR(8)
SET @ProjectNumber = (
SELECT
SUBSTRING(@FullErrorMessage, CHARINDEX(' ',@FullErrorMessage,PATINDEX('%[0-9]%',@FullErrorMessage))-8,8)
)
RETURN @ProjectNumber
END
Измените в своей таблице вычисляемый столбец с именем ProjectNumber. Это создание, которое я сделал для тестирования, но вы должны понять.
CREATE TABLE T_Errors(
ID int IDENTITY(1,1),
ErrorMessage varchar(1024),
ProjectNumber AS (dbo.GetProjectNumber(ErrorMessage))
CONSTRAINT PK_T_Errors PRIMARY KEY CLUSTERED(ID))
Теперь у вас есть номер проекта в отдельном столбце, с которым легко играть.
SELECT
CleanErrorMessage = REPLACE(ErrorMessage,ProjectNumber,''),
COUNT(*) As ErrorCount
FROM T_Errors
GROUP BY REPLACE(ErrorMessage,ProjectNumber,'')