sql >> Database >  >> RDS >> Sqlserver

moet gegevens gegroepeerd krijgen op groupid

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




  1. Geen geschikt stuurprogramma gevonden voor jdbc:mysql://localhost/

  2. Rijniveauvergrendeling in Mysql

  3. Oracle SQL voor de laatste werkdag van de huidige maand inclusief federale feestdagen in Oracle

  4. Selecteer ..... waar .... OF