INFORMATION_SCHEMA.COLUMNS
を使用して、非常に多くの列を持つテーブルのストアドプロシージャをより高速に構築できるようにしたいと思います。
たとえば、100列のテーブルのMERGEステートメントのupdate句の場合、COLUMN_1 = SOURCE.COLUMN1, COLUMN2...
100回実行する必要がありますが、これは楽しいことではありません。
オブジェクトブラウザからupdate/create / etcステートメントをスクリプト化できることは知っていますが、フォーマットをもう少し制御したいと思います。それで:
このクエリは、上記の各列の更新形式を出力します。
select column_name + ' = SOURCE.' + column_name + ', '
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'TableName'
残念ながら、それは複数の結果としてそうします:
COLUMN_1 = SOURCE.COLUMN_1,
COLUMN_2 = SOURCE.COLUMN_2,
etc.
質問:
上記のクエリを変更してすべての結果を連結し、出力が次のようになる方法を誰かに教えてもらえますか?
COLUMN_1 = SOURCE.COLUMN_1, COLUMN_2 = SOURCE.COLUMN_2, etc.
PS:カーソルを使って循環し、この結果を達成する方法を知っています。可能であれば、この目的のためにピボットまたはいくつかのT-SQL関数を使用してクエリでそれを行う方法を見つけたいと思います。