PIVOTを使用して生成された一時テーブルがあります(したがって、これは動的な列数になります)。そして、dbo.UserというSQLテーブルがあります。
私の一時テーブルは監査テーブルから生成されます。dbo.User テーブルと同じ列名になります。だから今、私が参加するときに両方のテーブルに同じ列が存在するかどうかを選択する必要があります。ユーザーテーブルではなく一時から値を選択する必要があります。単純なエイリアスメソッドの参加だとは思いません。私に提案してください。
前もって感謝します..
コード:
@cols は、監査テーブルの列名を教えてくれます (これはユーザー テーブルに関連しています) この動的な列数の列の数がわかりません
set @query = 'SELECT DISTINCT *, ' + @cols + '
FROM
(
select
e.USER_KEY,
e.FIELD_NAME+''_AUDIT'' AS FIELD_NAME_AUDIT,
e.PREVIOUS_DATA as DATA
FROM temp e
) x
pivot
(
max(DATA)
for FIELD_NAME_AUDIT in (' + @cols + ')
) p
INNER JOIN USER xyz ON xyz.USER_KEY = p.USER_KEY'
EXEC sp_executesql @query;
内部結合を使用するとあいまいなエラーが発生するため、実際のテーブルの列名と区別するために、列名に「_AUDIT」を追加しました。