我有一个使用 PIVOT 生成的临时表(所以这将具有动态列数)。我有一个名为 dbo.User 的 sql 表
我的临时表是从审计表生成的。这将具有与 dbo.User 表相同的列名。所以现在我必须选择当我加入时两个表中是否存在相同的列,我必须从 temp 而不是 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”附加到列名以与实际表列名分开,因为当我使用内部联接时会出现一些歧义错误。