TSQL: PARA XML PATH ('') No se pudo agrupar

Estoy tratando de agrupar los valores de columna por una columna específica usandoFOR XML PATH('') en TSQL. Este es el resultado en ambos casos (tenga en cuenta que sin el código XML, es decir:SELECT * FROM @xml - Es lo mismo que con el código XML):

Class          |     Animals
=================================
Asteroidea     |     Starfish
Mammalia       |     Dog
Mammalia       |     Cat
Mammalia       |     Coyote
Reptilia       |     Crocodile
Reptilia       |     Lizard

De acuerdo aEste artículo yEste artículo (Tenga en cuenta que el segundo artículo deja fuera laGROUP BY, que no estoy seguro de cómo el autor logró lograr esto sin él (lo he intentado y solo genera todos los valores), la sintaxis debe ser como se muestra a continuación:

DECLARE @xml TABLE(
    Animal VARCHAR(50),
    Class VARCHAR(50)
)

INSERT INTO @xml
VALUES ('Dog','Mammalia')
    , ('Cat','Mammalia')
    , ('Coyote','Mammalia')
    , ('Starfish','Asteroidea')
    , ('Crocodile','Reptilia')
    , ('Lizard','Reptilia')

SELECT x1.Class
    , STUFF((SELECT ',' + x2.Animal AS [text()] 
    FROM @xml x2 
    WHERE x1.Animal = x2.Animal 
    ORDER BY x2.Animal 
    FOR XML PATH('')),1,1,'' ) AS "Animals"
FROM @xml x1
GROUP BY Class

Después de unas horas, entre estos ejemplos y el código anterior, no veo dónde estoy equivocado en la sintaxis, pero recibo el error "Columna '@ xml.Animal' no es válido en la lista de selección porque no está contenido en una función agregada o en la cláusula GROUP BY ". Tenga en cuenta que si omito la cláusula GROUP BY, todavía no se producen los valores de la manera adecuada. Otro conjunto de ojos sería útil.

Respuestas a la pregunta(1)

Su respuesta a la pregunta