Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Симулирате group_concat MySQL функция в Microsoft SQL Server 2005?

Няма ИСТИНСКИ лесен начин да направите това. Въпреки това има много идеи.

Най-добрият, който намерих:

SELECT table_name, LEFT(column_names , LEN(column_names )-1) AS column_names
FROM information_schema.columns AS extern
CROSS APPLY
(
    SELECT column_name + ','
    FROM information_schema.columns AS intern
    WHERE extern.table_name = intern.table_name
    FOR XML PATH('')
) pre_trimmed (column_names)
GROUP BY table_name, column_names;

Или версия, която работи правилно, ако данните може да съдържат знаци като <

WITH extern
     AS (SELECT DISTINCT table_name
         FROM   INFORMATION_SCHEMA.COLUMNS)
SELECT table_name,
       LEFT(y.column_names, LEN(y.column_names) - 1) AS column_names
FROM   extern
       CROSS APPLY (SELECT column_name + ','
                    FROM   INFORMATION_SCHEMA.COLUMNS AS intern
                    WHERE  extern.table_name = intern.table_name
                    FOR XML PATH(''), TYPE) x (column_names)
       CROSS APPLY (SELECT x.column_names.value('.', 'NVARCHAR(MAX)')) y(column_names) 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да включите общия брой върнати редове в набора от резултати от командата SELECT T-SQL?

  2. Изхвърлете всички таблици, чиито имена започват с определен низ

  3. Как да премахнете частта от времето на стойност за дата и час (SQL Server)?

  4. Подгответе нова виртуална машина за SQL Server 2014 CTP1

  5. Матрица на поддържаните версии на SQL Server