列名がa、b、c、d、e、fの表table1があります。 ここでは、各列の値を取得して1つの行の値にし、それを他のtable2 - columns(x、y、z)に挿入します。だから、私のクエリは次のようになります:列名を動的に追加し、その値を行sqlサーバーとして追加します。
insert into table2 (x, y, z)
select a, '', '' from table1
union all
select b, '', '' from table1
union all
select c, '', '' from table1
union all
select d, '', '' from table1
union all
select e, '', '' from table1
.
.
.
union all
select f, '', '' from table1
新しいカラムがtable1に追加されたら、もう一度これにselect文を追加する必要があります。ちょうどこれを避けたいのですが、どのようにして自動的にすべての列を考慮してより短くする動的クエリを書くことができますか?
これは私の問題を解決しました。カラム名と値の両方が来ています。しかし、私はまだこの方法を理解することに頭を悩ましています。 –
@AjayRawat Cross Applyは非常に強力なオプションです。最初の行は行をXMLに変換します。 2回目のクロス・アプライはそのXMLを取り、結果をアンピボットします。 –