I have posted a question here Show multiple records in a row to get a result like this
It was answered perfectly in MySQL but I'm working with SQL Server where the query is different. My tables are
CREATE TABLE events
(
id int NOT NULL,
event_name varchar(100) NOT NULL,
event_id int NOT NULL
);
INSERT INTO events (id, event_name, event_id)
VALUES (1, 'dance', 1), (2, 'sing', 2), (3, 'acting', 3), (4, 'debate', 4);
CREATE TABLE students
(
id int NOT NULL,
student_name text NOT NULL,
event_id int NOT NULL
);
INSERT INTO students (id, student_name, event_id)
VALUES (1, 'student1', 1), (2, 'student1', 2),
(3, 'student1', 3), (4, 'student1', 4),
(5, 'student2', 3), (6, 'student3', 2),
(7, 'student3', 4);
I was trying with a sample query here http://rextester.com/RXK72524, but it's not working as it.
The query I used
SELECT
s.student_name,
STUFF (g.student_name, 1, 1, '') AS events
FROM
Students s
CROSS APPLY
(SELECT
',' + e.event_name
FROM
students s
LEFT JOIN
events e ON s.event_id = e.event_id
ORDER BY
e.event_name
FOR XML PATH ('')) g (student_name)
Please correct me. Thanks