このPostgreSQLコードをSQL Serverに変換するにはどうすればよいですか?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
私の最初の問題は、完全なマスターテーブルを選択する必要があり、各行にすべての詳細が必要であるということです。
国:
id title
1 SLO
2 AUT
郵便番号:
id country_id code title
1 1 1000 Lj
2 1 2000 Mb
3 2 22180 Vi
4 2 22484 De
望ましい結果:
1 SLO 1000;Lj|2000;MB
2 AUT 22180;Vi|22484;De
ない:
1 SLO 1000 Lj
1 SLO 2000 Mb
2 AUT 22180 Vi
2 AUT 22484 De
最善の解決策は、FOR JSONを使用してだろうが、残念ながら私は2008または左のすべてのマスタデータが詳細・カウントのために複製され参加して
少なくとも2012年のサポートを必要とするが、私はこれを行うにはしたくありません。さらに悪いことに、すべての国を選択し、forループ内のすべての国についてpost_codes
を選択することができます。
SQL Server 2008のは、サポートされなくなりました。 2012年はサポートされている最初のバージョンですが、Columnstoreインデックス、圧縮、インメモリテーブル、SQL Server ExpressおよびLocalDB(SP1を使用)でのパーティショニングでも2016が当然選択されます。 T-SQLのコードJSON生成よりも安価かもしれません –
私は知っていますが、500人のクライアントに新しいSQLを購入すべきだと説得するのは不可能です。彼らは私たちの製品が2005年と一緒に働くことを望んでいます。 :) – Makla
データは無料のSQL Server Expressバージョンに収まるものの、とにかく、このような変換は、*クライアント*上ではるかに簡単で安全です。データベースの文字列操作は高価です。また、エスケープする必要があるデータがある場合はどうしますか? –