sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan opretter jeg en kommasepareret liste ved hjælp af en SQL-forespørgsel?

MySQL

SELECT r.name, GROUP_CONCAT(a.name SEPARATOR ',') FROM RESOURCES r JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id JOIN APPLICATIONS a ON a.id = ar.app_id GROUP BY r.name

SQL-server (2005+)

SELECT r.name, STUFF((SELECT ',' + a.name FROM APPLICATIONS a JOIN APPLICATIONRESOURCES ar ON ar.app_id = a.id WHERE ar.resource_id = r.id GROUP BY a.name FOR XML PATH(''), TYPE).value('text()[1]','NVARCHAR(max)'), 1, LEN(','), '') FROM RESOURCES r

SQL-server (2017+)

SELECT r.name, STRING_AGG(a.name, ',') FROM RESOURCES r JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id JOIN APPLICATIONS a ON a.id = ar.app_id GROUP BY r.name

Oracle

Jeg anbefaler at læse om strengaggregering/sammenkædning i Oracle.



  1. Pivot flere kolonner baseret på én kolonne i SQL Server

  2. Vinduesfunktioner eller almindelige tabeludtryk:tæl tidligere rækker inden for rækkevidde

  3. Brug MySQL relationsdatabaser på Fedora 14

  4. Forbedring af top/top faldende medianløsning