Probeer het volgende concept te gebruiken:
Gegevens invoegen:
CREATE TABLE some_table (some_data VARCHAR(20), some_other_data VARCHAR(20), groupId VARCHAR(20));
INSERT INTO some_table (some_data, some_other_data, groupId) values ('a', '1', 'id1');
INSERT INTO some_table (some_data, some_other_data, groupId) values ('b', '2', 'id1');
INSERT INTO some_table (some_data, some_other_data, groupId) values ('c', '3', 'id2');
Voer de vraag uit:
SELECT '{"' + t.groupId + '": [{' + STUFF(
(
SELECT '{ "some_data":"' + td.some_data + '"', ', "some_other_data":' + td.some_other_data + '},'
FROM some_table td
WHERE t.groupId = td.groupId
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 1, '') + ']}'
FROM some_table t
GROUP BY t.groupId
Resultaten:
Let op:de volgkomma mag de geldigheid van de gegevens niet beïnvloeden. Mijn ervaring met SQL Server is beperkt, maar dit zou je op weg moeten helpen in een richting die kan werken.
Viool:
http://sqlfiddle.com/#!6/66b19/35