Simulating group_concat MySQL function in Microsoft SQL Server 2005? -
i'm trying migrate mysql-based app on microsoft sql server 2005 (not choice, that's life).
in original app, used almost entirely ansi-sql compliant statements, 1 significant exception -- used mysql's group_concat function frequently.
group_concat, way, this: given table of, say, employee names , projects...
select empname, projid project_members; returns:
andy | a100 andy | b391 andy | x010 tom | a100 tom | a510 ... , here's group_concat:
select empname, group_concat(projid separator ' / ') project_members group empname; returns:
andy | a100 / b391 / x010 tom | a100 / a510 so i'd know is: possible write, say, user-defined function in sql server emulates functionality of group_concat?
i have no experience using udfs, stored procedures, or that, straight-up sql, please err on side of explanation :)
no real easy way this. lots of ideas out there, though.
select table_name, left(column_names , len(column_names )-1) column_names information_schema.columns extern cross apply ( select column_name + ',' information_schema.columns intern extern.table_name = intern.table_name xml path('') ) pre_trimmed (column_names) group table_name, column_names; or version works correctly if data might contain characters such <
with extern (select distinct table_name information_schema.columns) select table_name, left(y.column_names, len(y.column_names) - 1) column_names extern cross apply (select column_name + ',' information_schema.columns intern extern.table_name = intern.table_name xml path(''), type) x (column_names) cross apply (select x.column_names.value('.', 'nvarchar(max)')) y(column_names)
Comments
Post a Comment