TSQL: FOR XML PATH ('') Falha ao agrupar

Estou tentando agrupar valores de coluna por uma coluna específica usandoFOR XML PATH('') em TSQL. Este é o resultado em ambos os casos (note que o sem código XML - ou seja:SELECT * FROM @xml - é o mesmo que com o código XML):

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

De acordo comEste artigo eEste artigo (note que o segundo artigo deixa de foraGROUP BY, que eu não tenho certeza como o autor conseguiu fazer isso sem ele - eu tentei e só gera todos os valores), a sintaxe deve ser como mostrado abaixo:

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

Depois de algumas horas, entre esses exemplos e o código acima, não consigo ver onde estou errado na sintaxe, mas estou recebendo o erro "Coluna '@ xml.Animal' é inválido na lista de seleção porque não é contidos em uma função agregada ou na cláusula GROUP BY. " Observe que, se eu deixar a cláusula GROUP BY, ela ainda não produzirá os valores da maneira apropriada. Outro conjunto de olhos seria útil.

questionAnswers(1)

yourAnswerToTheQuestion