sql >> Databasteknik >  >> RDS >> Sqlserver

behöver få data grupperade efter groupid

Prova att använda följande koncept:

Infoga data:

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

Kör frågan:

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

Resultat:

Observera att det avslutande kommatecken inte bör påverka datas giltighet. Min erfarenhet av SQL Server är begränsad, men detta bör få dig igång i en riktning som kan fungera.

Fiol:

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




  1. Filtyp Kontrollera för JPG, JPEG, PNG

  2. SQL Server 2016:Skapa en inloggning

  3. Konvertera tecken med accent i PostgreSQL?

  4. Postgresql kasta null-värde i kolumn bryter mot noll-begränsningen vid användning av oneToMany-relation i JPA