行と列の値のマッピングに基づいて結果を作成しようとしています。これは例です
最初のテーブル(#column_table)にはcolunm_idとcolumn_nameがあります。
2番目のテーブル#column_valueには、最初のテーブルの行の値があります。
以下のようなデータセットを作成したいと思います。
どうすればそれを達成できますか?
データ設定用の一時テーブルは次のとおりです。
create table #column_table (column_id int, column_name varchar(50) )
insert into #column_table
values
(1, 'FirstName'),
(2, 'LastName'),
(3, 'Address'),
(4, 'Phone')
create table #column_value(FirstName varchar(50), LastName varchar(50), Phone varchar(50),)
insert into #column_value
values
('John','Smith','1234567')
select * from #column_table
select * from #column_value
UNPIVOTの方がパフォーマンスが高くなりますが、実際に動的SQLを使用せずに、より動的なアプローチが必要な場合
例
Select D.Column_ID
,Column_Value = C.Value
From #column_value A
Cross Apply (values (convert(xml,(Select A.* For XML Raw)))) B(XMLData)
Cross Apply (
Select Item = xAttr.value('local-name(.)', 'varchar(100)')
,Value = xAttr.value('.','varchar(max)')
From XMLData.nodes('//@*') xNode(xAttr)
) C
Join #column_table D on C.Item=D.Column_Name
戻り値
Column_ID Column_Value
1 John
2 Smith
4 1234567
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加