Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Agrupar por consulta sql na coluna unida por vírgula


Uma solução SQL Server
WITH T ([Data], [Mail])
     AS (SELECT 1,'example@sqldat.com,example@sqldat.com' UNION ALL
         SELECT 2,'example@sqldat.com,example@sqldat.com')
SELECT address  AS Mail,
       COUNT(*) AS [Count]
FROM   T
       CROSS APPLY (SELECT CAST('<m>' + REPLACE([Mail], ',', '</m><m>') + '</m>'
                                AS XML
                           ) AS x) ca1
       CROSS APPLY (SELECT T.split.value('.', 'varchar(200)') AS address
                    FROM   x.nodes('/m') T(split)) ca
GROUP  BY address