Simulating group_concat MySQL function in Microsoft SQL Server 2005?
No REAL easy way to do this. Lots of ideas out there, though.
Best one I've found:
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;
Or a version that works correctly if the data might contain characters such as <
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)
Group_concat MySQL function's equivalent in MS-SQL SERVER
We don't have such group_concat of mysql in sql server, either you can use Stuff function or for xml path functionality to achiev
Convert GROUP_CONCAT statement into SQL Server
Can you please try this.
DECLARE @Table TABLE
(
ID INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50),
language VARCHAR(50)
)
INSERT INTO @Table VALUES('A','en'),('b','nl'),('c','de'),('A','nl')
SELECT
name
,STUFF((
SELECT ',' + T.language
FROM @Table T
WHERE T.name = tb.name
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS [lang]
FROM @Table tb
GROUP BY tb.name
Output be like
name lang
---------- -----------------------
A en,nl
b nl
c de
How to use GROUP_CONCAT function on MSSQL
Try:
select distinct t1.QUESTION_ID, t1.ANSWER_ID
STUFF((SELECT distinct '' + t2.USER
from yourtable t2
where t1.ANSWER_ID= t2.ANSWER_ID
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,0,'') data
from yourtable t1;
How to make a query with group_concat in sql server
Query:
SELECT
m.maskid
, m.maskname
, m.schoolid
, s.schoolname
, maskdetail = STUFF((
SELECT ',' + md.maskdetail
FROM dbo.maskdetails md
WHERE m.maskid = md.maskid
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM dbo.tblmask m
JOIN dbo.school s ON s.ID = m.schoolid
ORDER BY m.maskname
Additional information:
String Aggregation in the World of SQL Server
Related Topics
Mysql: Alter Table If Column Not Exists
Select Different Values from Same Column in a Table and Display It Under Different Columns
How to Add Leading Zero When Number Is Less Than 10
How to Combine First Name, Middle Name and Last Name in SQL Server
How to Modify Query to Remove Double-Quotes from All Columns
Insert Multiple Rows Without Repeating the "Insert into ..." Part of the Statement
Sql Take Just the Numeric Values from a Varchar
Retrieve Varbinary Value as Base64 in Mssql
Sql Query to Join Two Tables With No Repeated Values
Er_Access_Denied_Error: Access Denied for User ''@'Localhost' (Using Password: No)
Select Only Rows With Max Date
Inserting Date Value into Date Field Using Laravel
Select to Get Rows Based on Minimum Value of a Column
Postgres: Insert If Does Not Exist Already
Oracle Sql: Extracting Text Between Two Characters
How to Make SQL Query Result Show With 2 Decimals
How to Find Specific Values in a Table in Oracle
How to Resolve MySQL Error Code: 1292. Truncated Incorrect Double Value