在SQL server中,如何从数据不匹配的源查询(目标查询除外)中获取列名

在SQL server中,如何从数据不匹配的源查询(目标查询除外)中获取列名,sql,sql-server,cursor,intersect,except,Sql,Sql Server,Cursor,Intersect,Except,我必须找出源查询中除目标查询外具有不同数据的列的名称 当前,当我执行源查询(目标查询除外)时,即使只有一个列值不同,它也会返回整行。我的要求是找出这些有数据差异的列的名称,并将它们放入一个单独的表中 例如,如果我有一个如下表: Select * from A; Col1 Col2 Col3 Col4 1 A India Delhi 2 A US Newyork 当我询问: Select * from A where C

我必须找出源查询中除目标查询外具有不同数据的列的名称

当前,当我执行源查询(目标查询除外)时,即使只有一个列值不同,它也会返回整行。我的要求是找出这些有数据差异的列的名称,并将它们放入一个单独的表中

例如,如果我有一个如下表:

Select * from A;

Col1    Col2   Col3    Col4
1        A     India   Delhi
2        A     US      Newyork
当我询问:

Select * from A where Col1=1
except
select * from A where Col1=2
它将显示:

Col1    Col2   Col3    Col4
1        A     India   Delhi

但是,我需要将Col1键字段值和Col3、Col4名称列名填充到一个新表中,在执行except查询时发现它们不相同。

我认为您的方法存在概念性缺陷。 假设你的桌子是

Col1  Col2
----  ----
A     A   
B     B   
C     C   

Col1  Col2
----  ---- 
A     A   
B     C   
C     B   
如果使用selectexpect,您会很高兴地发现第一个元组没有改变。在那之后,问题是你没有办法去处理剩下的行。B-B匹配的B-C或C-B或C-C是否已更新,或B-B和C-C是否已删除,其他是否为新行

你必须依靠任何种类的钥匙。假设您这样做了,剩下的就是传统的无聊SQL