Wie kann ich diesen PostgreSQL-Code in SQL Server konvertieren?SQL Server array_agg (Master - Detail)
select
countries.title,
(select array_to_json(array_agg(row_to_json(t)))
from postcodes t
where t.country_id = countries.id) as codes
from countries
Mein erstes Problem ist, dass ich vollständige Master-Tabelle und mit jeder Zeile alle Details auswählen muss.
Länder:
id title
1 SLO
2 AUT
POSTLEITZAHLEN:
id country_id code title
1 1 1000 Lj
2 1 2000 Mb
3 2 22180 Vi
4 2 22484 De
Wunschergebnis:
1 SLO 1000;Lj|2000;MB
2 AUT 22180;Vi|22484;De
Nicht:
1 SLO 1000 Lj
1 SLO 2000 Mb
2 AUT 22180 Vi
2 AUT 22484 De
Die beste Lösung wäre FOR JSON verwenden, aber leider muss ich die Unterstützung für 2008 oder mindestens 2012
Mit LEFT JOIN alle Stammdaten zum Detail Zählung dupliziert, aber ich will nicht, dies zu tun. Noch schlimmer wäre es, alle Länder auszuwählen und dann wählen Sie auf post_codes
für jedes Land in For-Schleife.
SQL Server 2008 wird nicht mehr unterstützt. 2012 ist die früheste unterstützte Version, obwohl 2016 die offensichtliche Wahl ist, da Sie Columnstore-Indizes, Komprimierung, In-Memory-Tabellen, Partitionierung sogar in SQL Server Express und LocalDB (mit SP1) erhalten. Es kann billiger sein, als Code JSON Generation in T-SQL zu aktualisieren –
Ich weiß, aber 500 Kunden zu überzeugen, dass sie neueren SQL gekauft haben, ist Mission unmöglich. Sie wollen, dass unser Produkt mit 2005 arbeiten würde. Wahnsinn, wenn Sie mich fragen. :) – Makla
Auch wenn ihre Daten in die kostenlose Version von SQL Server Express passen könnten? Solche Conversions sind auf dem * Client * jedoch viel einfacher und sicherer. String Manipulation in der Datenbank ist teuer. Und was werden Sie tun, wenn Daten entweichen müssen? –