【问题标题】:In SQL server, how to fetch column names from a source except target query for which data does not match在 SQL Server 中,如何从数据不匹配的目标查询之外的源中获取列名
【发布时间】:2018-06-17 12:23:36
【问题描述】:

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

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

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

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 名称(列名,在执行查询时发现它们不一样)填充到一个新表中。

【问题讨论】:

    标签: sql sql-server cursor intersect except


    【解决方案1】:

    我认为您的方法存在概念错误。 假设您的表是

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

    如果您使用“SELECT Expect”,您会很高兴地发现第一个元组没有改变。之后,问题是您无法处理剩余的行。 B-B 是否匹配 B-C 或 C-B 或 C-C 是否已更新或 B-B 和 C-C 已删除且其他为新行?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-25
      • 2015-04-27
      • 1970-01-01
      • 2019-12-07
      • 2020-10-24
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      相关资源
      最近更新 更多