DECLARE @xml xml
SET @Xml = '<FIELD NAME="NAME" BASE="5179827" COUNT="4">
<TOKEN TEXT="a">...</TOKEN>
<TOKEN TEXT="b">...</TOKEN>
<TOKEN TEXT="a">...</TOKEN>
<TOKEN TEXT="b">...</TOKEN>
<TOKEN TEXT="a">...</TOKEN>
<TOKEN TEXT="c">...</TOKEN>
</FIELD>'
SELECT
x.query('data(TOKEN/@TEXT)') AS List
,x.query('distinct-values(TOKEN/@TEXT)') AS DistinctList
, x.query('<data>
{
for $x in distinct-values(TOKEN/@TEXT)
return
(concat($x, ","))
}
</data>
').query('data/text()') AS CommaSeparatedList
FROM @xml.nodes('/FIELD') AS d(x)
References
http://www.olcot.co.uk/sql-blogs/using-xquery-to-remove-duplicate-values-or-duplicate-nodes-from-an-xml-instance