【问题标题】:Uncommon records between two result sets from two different queries来自两个不同查询的两个结果集之间的不常见记录
【发布时间】:2014-02-05 15:48:46
【问题描述】:

我有两个查询(每个查询在不同的表上),每个查询都有自己的 where 子句。
两个表的主键名称不同,但值相同。
我如何提取记录在结果集 1 中,但不在结果集 2 中。

这是两个查询的示例
Query1:

SELECT DISTINCT [EntityID],[Year],[Name],[OperationalStatus],[RefTypeID] 
FROM [DB].[dbo].[Entity] 
WHERE [Year]='2014' AND [RefTypeID] IN ('abc','xys')

查询2:

SELECT DISTINCT [OrganizationID],[Year],[OperationalStatusID],[Active],[ModifiedBy],[ModifiedDate] 
      FROM [DB2].[dbo].[Organization] WHERE [Year]='2014'

query1 的主键是 [EntityID],第二个查询的主键是 [OrganizationID]。这两列具有相同的值

【问题讨论】:

  • 您的第二个查询未完成,请编辑您的问题以显示实际查询。您还需要告诉我们哪些列/列是/是主键
  • 两个查询拉取的列不同。您如何确定哪些记录匹配?
  • 很抱歉。我刚刚编辑了第二个查询。
  • MINUS/EXCEPT 可能是答案,但我们不清楚要考虑匹配的列。 EntityID = OrganizationID 是您在两个查询中选择的所有列中唯一匹配的列?
  • 是的,只有一列包含相似的值。表 1.[实体 ID]=表 2.[组织 ID]。下面的第一个答案做到了。谢谢大家。这太棒了!

标签: sql


【解决方案1】:

像这样:

    SELECT * FROM
    (
    SELECT DISTINCT [EntityID],[Year],[Name],[OperationalStatus],[RefTypeID] 
    FROM [DB].[dbo].[Entity] A
    WHERE [Year]='2014' AND [RefTypeID] IN ('abc','xys') AND 
    Not Exists 
    (
      SELECT DISTINCT [OrganizationID],[Year],[OperationalStatusID],[Active],[ModifiedBy],     
      [ModifiedDate] 
      FROM [DB2].[dbo].[Organization] D WHERE [FiscalYear]='2014' AND
      A.EntityID = D.OrganizationID AND
      A.Year=D.Year
      A.Name = D. Name
    )
) AS T

【讨论】:

  • 做到了。谢谢!
  • @Vignesh, DISTINCT 在子查询中真的不需要..!!但实际上仍然没有损害结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多