SQL-Server : query Spalten, um JSON-Objekt mit group by
Ich habe eine Tabelle mit 3 Spalten, ich möchte Abfrage, die die Tabelle, so dass das Ergebnis wird ein JSON-Objekt.
Beispieldaten sieht so aus:
CREATE TABLE #Test (ValueV INT, KEYS NVARCHAR (100), ID INT)
INSERT INTO #Test
VALUES (1, N'ChangeAdress 19 - 21', 200),
(1, N'ChangeAdress 20 - 22', 200),
(1, N'ChangeAdress 22 - 24', 300),
(1, N'ChangeAdress 23 - 25', 300),
(2, N'ChangeAdress 24 - 26', 400),
(2, N'ChangeAdress 25 - 27', 400),
(3, N'ChangeAdress 26 - 28', 400),
(3, N'ChangeAdress 27 - 29', 400)
SELECT * FROM #Test
Meine Abfrage versucht:
SELECT ID, Keys, ValueV
FROM #Test
GROUP BY ID, keys, ValueV
FOR JSON AUTO
Aber das gibt 1 zurück, JSON 'Zeile'. Was ich will, ist eine Zeile pro Gruppe. Gruppe wird hier ID, Wert-Kombination. Ich habe wenig Erfahrung mit JSON-Objekten (das wird wahrscheinlich sichtbar aus dieser Abfrage), so dass Hilfe wäre sehr geschätzt.
Den gewünschten Ausgang (aber dann als JSON pro Zeile):
--------------------------------------------------
|200, 1, ChangeAdress 19 - 21, ChangeAdress 20 - 22|
|300, 1, ChangeAdress 22 - 24, ChangeAdress 23 - 25|
|400, 2, ChangeAdress 24 - 26, ChangeAdress 25 - 27|
|400, 3, ChangeAdress 26 - 28, ChangeAdress 27 - 29|
Vielen Dank im Voraus!
Ausgang nicht klar. Was du jetzt hast ist JSON nicht. Wollen Sie so etwas wie
Wenn das regelmäßige JSON-format, dann ja. Mir fehlt die Vertrautheit, die hier mit JSON-Objekten, sorry.
Danke für Ihre gute Frage. Ich kam auch über diese Frage genau
{ "ID": 200, "ValueV": 1, "KEYS": ["ChangeAdress 19-21", "ChangeAdress 20-22"] }
?Wenn das regelmäßige JSON-format, dann ja. Mir fehlt die Vertrautheit, die hier mit JSON-Objekten, sorry.
Danke für Ihre gute Frage. Ich kam auch über diese Frage genau
InformationsquelleAutor SQL_M | 2018-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das funktioniert (in der SQL Server-2017, wo
STRING_AGG
verfügbar ist), aber ist sehr umständlich. Ich bin nicht sicher, ob es nicht eine elegantere Art und Weise.Für SQL Server-2016 (die keine
STRING_AGG
oderSTRING_ESCAPE
für diese Angelegenheit):Sogar weniger elegant, aber Sie nehmen, was Sie bekommen können. Wenigstens sind wir nicht die Verkettung mit
FOR XML
...InformationsquelleAutor Jeroen Mostert
Versuchen Sie dies:
oder so:
InformationsquelleAutor newman
Meine zwei Cent:
Interessant, dass Sie möchten, gültig einzelnen JSON-Zeilen und nicht eine einzige JSON-string. Jedenfalls, hier sind ein paar Alternative Antworten, obwohl die akzeptierte Antwort ist die beste.
Oder:
Oder:
Nur schnell der Hinweis, dass JSON selbst ist nicht ein Objekt, sondern nur eine Reihe von Namen-Wert-Paare ein gültiges JavaScript, aber ein subset dennoch sieht es ganz anders aus, wenn zum Beispiel Sie möchten eine verschachtelte Javascript-Objekt (Wenn JS ist Ihren beabsichtigten Zielort für die Daten, ich gehe mal davon aus hier). Die JSON-Funktion ist toll für das schnelle abziehen der Daten für die übertragung, aber wenn Sie möchten, eine verschachtelte Ausgabe oder gruppieren Sie die Daten für die ein Werte-array keine Objekte, es kann sehr schwierig sein. Persönlich, da es ein string ist, für kompliziertere Sachen, die ich einfach nur bauen es selbst. Hoffe das ist eine andere nehmen.
InformationsquelleAutor Useless_Wizard