我的需求是比较两个环境中的数据,并且我在两个环境的两个表中都存在diff,将该数据插入临时表并显示它。上述解决方案不适合我的场景。我会以更好的方式解释我的情况。获取column_Name如果我知道sql server中的列值
在一个Curor Cur1中,我从一个Table(Report)中获取DEV的所有数据,其中Rep_ID = 1,从REPORT表的TEST中获取对应的数据,其中Rep_ID = 1在while循环中,我将DEV和TEST
if (@DevData1 <> @TestData1)
BEGIN Get ColumnName from Report table where @DevData1 =1 Insert Into #TempTable (ColumnName, DevData1, TestData1)
ENDS Cur1 Ends
当我试图得到一个VARCHAR列的列名,我正确地与下面的查询
Declare @ColStrRep nvarchar(1000)= 'select @retValOut= Col.value(''local-name(.)'', ''varchar(max)'') from (select * from Rep_attr where Rep_Name = '''[email protected] +''' for xml path(''''), type) as T(XMLCol) cross apply T.XMLCol.nodes(''*'') as n(Col) where Col.value(''.'', ''varchar(100)'') = '[email protected] +''
print @ColStrRep
EXEC Sp_executesql @ColStrRep,N'@retValOut nvarchar(100) out',@Column_Name OUT
获得列名但是,当我试图让COLUMNNAME为整数列,当我们在表中具有与1相同的值时也是如此(例如RepI D = 1,Flag = 1,IsEmpty = 1等),查询变得困惑,而不是Rep_ID,它将检索列IsEmpty。所以我需要另一个查询,只是给了我一个columnValue的列名。
感谢和问候, Sajitha
这是一个很好的开始。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –
“这个查询不起作用”是什么意思?请发布你的尝试和你得到的错误信息。 –