Sql server 使用相同的列连接临时表和实际表

Sql server 使用相同的列连接临时表和实际表,sql-server,Sql Server,我有一个使用Pivot生成的临时表,所以这将具有动态的列数。我还有一个名为dbo.User的sql表 我的临时表是从审计表生成的。它将具有与dbo.User表相同的列名。所以现在我必须选择当我加入时,两个表中是否存在相同的列,我必须从temp而不是User表中选择值。我不认为这是一个简单的别名连接方法。请推荐我 提前谢谢 代码: @cols给了我audit表中与user表相关的列名。我不知道这个表中的列数,动态列数 set @query = 'SELECT DISTINCT *, ' + @co

我有一个使用Pivot生成的临时表,所以这将具有动态的列数。我还有一个名为dbo.User的sql表

我的临时表是从审计表生成的。它将具有与dbo.User表相同的列名。所以现在我必须选择当我加入时,两个表中是否存在相同的列,我必须从temp而不是User表中选择值。我不认为这是一个简单的别名连接方法。请推荐我

提前谢谢

代码:

@cols给了我audit表中与user表相关的列名。我不知道这个表中的列数,动态列数

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;

我在列名后面附加了“\u AUDIT”,以便与实际的表列名分开,因为当我使用内部联接时,存在一些模糊错误。

我不确定是否有人理解我的问题,但我的解决方案是: 我使用了另一个临时表从tbl_user获取所有列,并使用 @COL和它们内部连接两个临时表:

SELECT * INTO #TempTable FROM USER where USER_KEY= @User_key

set @query = '
                  ALTER TABLE #TempTable DROP COLUMN ' + @cols + '
                  SELECT DISTINCT p.*, xyz.* 
                  FROM 
                 (
                    select
                      e.USER_KEY,
                      e.FIELD_NAME,
                      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;

您是否有一个已经尝试过但不起作用的示例查询?