Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak utworzyć listę rozdzielaną przecinkami za pomocą zapytania SQL?

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

Serwer SQL (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

Serwer SQL (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

Wyrocznia

Polecam poczytać o agregacji/konkatentacji ciągów w Oracle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj „czas” na „smalldatetime” w SQL Server (przykłady T-SQL)

  2. SQL Server ORDER BY data i wartości null trwają

  3. Klucz obcy do klucza złożonego

  4. Użyj zmiennej z TOP w instrukcji select w SQL Server bez robienia jej dynamicznej

  5. Znajdź indeks ostatniego wystąpienia podciągu za pomocą T-SQL