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,'[email protected],[email protected]' UNION ALL
         SELECT 2,'[email protected],[email protected]')
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