私は以下のように動的問合せを持っています。 @ColumnNames
paramには、このピボットが使用する複数の列があります。 @ID
および@Apartment_ID
は、挿入パラメータに由来します。動的なPIVOT問合せからの未知数と列名からのINSERT INTO一時表
SET @DynamicSQL = 'select id, name, address, phone, remarks, ' + **@ColumnNames** + '
from (select b.id, name, criteria_id, impact_value, remarks
from dbo.User u
inner join dbo.ID b on b.id = u.id
where b.Instance_ID = '+ **@Id** +
'and ownerID in (select * from fnSplitString(''' + **@Apartment_ID** + + ''',' + ''',''' + '))'
+ ') as t
pivot (max(impact_value) for criteria_id in (' + **@ColumnNames**+')
) pivoted '
Exec sp_executesql @DynamicSQL
スクリーンショットに示すように結果が得られます。カラム(91、92、...)は@ColumnNames
から取得することに固定されていません。
私は並べ替え機能を作るために、一時テーブルに設定されたこのダイナミックな結果を挿入したいです。
Declare @SQLstrs nvarchar(max)
IF OBJECT_ID('tempdb..#tempResult') IS NOT NULL
DROP TABLE #tempResult
CREATE TABLE #tempResult
(
id int,
name nvarchar(max),
address nvarchar(max),
phone nvarchar(max),
Remarks nvarchar(max),
**@ColumnNames**
)
--EXEC (@Alter_sql);
SET @SQLstrs = 'Insert into #tempResult ' + @DynamicSQL
EXEC @SQLstrs
テンポラリテーブルに固定列を含める必要があるため、挿入する列の数を知ることができない動的列を設定するにはどうすればよいですか? *「私は並べ替え機能を作るために、一時テーブルに設定されたこのダイナミックな結果を挿入したい。」* -
を使用しようか?これは私にとって[xyの問題](https://meta.stackexchange.com/q/66377/179361)と非常によく似ています。 – GarethD
あなたは '#tempResult'テーブルで何をするつもりですか? –
@DynamicSQL内のステートメントで注文を挿入する前に試したので、テンポラリテーブルから名前で注文したいのですが動作しませんでした。その理由は、まず、動的データをソートせずに一時テーブルに入れます。次に、テンポラリテーブルで並べ替えを行う –