1

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」を追加しました。

4

1 に答える 1