Попробуйте это
;WITH CTE(ID,StrValue,SortID )
AS
(
SELECT 130030,'12345678' ,2 UNION ALL
SELECT 130030,'Huber' ,3 UNION ALL
SELECT 130030,'Georg Hans',5 UNION ALL
SELECT 130801,'11223344' ,2 UNION ALL
SELECT 130801,'Schreiner' ,3 UNION ALL
SELECT 130801,'Peter' ,5 UNION ALL
SELECT 131244,'87654321' ,2 UNION ALL
SELECT 131244,'Schneider' ,3 UNION ALL
SELECT 131244,'Hans' ,5
)
,Cte2
AS
(
SELECT ID,StrValue,
CAST(CASE WHEN ISNUMERIC(StrValue) >0
THEN StrValue ELSE NULL END AS INT) AS StrValueNumeric ,
SortID
FROM CTE
)
,CTE_Final
AS
(
SELECT ID,SortID,StrValue,
CASE WHEN StrValueNumeric IS NOT NULL THEN StrValueNumeric
ELSE (SELECT MAX(StrValueNumeric)
FROM Cte2
WHERE StrValueNumeric IS NOT NULL
AND id = o.id
)END AS StrValueNumeric
FROM Cte2 o
)
SELECT DISTINCT
LTRIM(STUFf((SELECT ', ' + StrValue
FROM CTE_Final i
WHERE i.StrValueNumeric = o.StrValueNumeric
FOR XML PATH ('')),1,1,'')) As StrValue
FROM CTE_Final o
Результат
ReqFormat
-----------------------------
11223344, Schreiner, Peter
12345678, Huber, Georg Hans
87654321, Schneider, Hans