Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Daten müssen nach Gruppen-ID gruppiert werden

Versuchen Sie es mit folgendem Konzept:

Daten einfügen:

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');

Führen Sie die Abfrage aus:

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

Ergebnisse:

Beachten Sie, dass das abschließende Komma die Gültigkeit der Daten nicht beeinträchtigen sollte. Meine Erfahrung mit SQL Server ist begrenzt, aber das sollte Sie in eine Richtung führen, die funktionieren kann.

Geige:

http://sqlfiddle.com/#!6/66b19/35