Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用自连接在SQL中查找重复项_Sql_Duplicates_Self Join - Fatal编程技术网

使用自连接在SQL中查找重复项

使用自连接在SQL中查找重复项,sql,duplicates,self-join,Sql,Duplicates,Self Join,我知道还有其他类似的问题。然而,我的问题是为什么我使用的查询没有返回最佳结果。下面是查询。为了给出上下文,我有一个包含113列/字段的表。然而,只有4个真正重要;科目,年份,qtr,cnty县。此表是按机构划分的雇主列表。雇主可以出现多次。同一个人拥有12家星巴克就是最好的例子。我要找的是一个查询,它将显示帐户值何时具有不同的cnty值。下面的查询工作正常,但显示的内容太多。它显示acct值相同但cnty值也相同的行。看看这个问题,你有没有想过为什么它显示的太多了 select distin

我知道还有其他类似的问题。然而,我的问题是为什么我使用的查询没有返回最佳结果。下面是查询。为了给出上下文,我有一个包含113列/字段的表。然而,只有4个真正重要;科目,年份,qtr,cnty县。此表是按机构划分的雇主列表。雇主可以出现多次。同一个人拥有12家星巴克就是最好的例子。我要找的是一个查询,它将显示帐户值何时具有不同的cnty值。下面的查询工作正常,但显示的内容太多。它显示acct值相同但cnty值也相同的行。看看这个问题,你有没有想过为什么它显示的太多了

  select distinct t1.acct, t1.year, t1.qtr, t1.cnty
  from dbo.table t1 join dbo.table t2 on t1.acct=t2.acct
  where (t1.cnty <> t2.cnty)
  order by t1.acct, t1.year, t1.qtr, t1.cnty
这是你想要的吗

  select distinct t.acct, t.year, t.qtr, t.cnty
  from (select t.*, min(cnty) over (partition by acct, year, qtr) as min_cnty,
               max(cnty) over (partition by acct, year, qtr) as max_cnty
        from dbo.table t
       ) t
  where min_cnty <> max_cnty;

我得到了一系列关于如何找不到t.acct和其他人的报道。
  select distinct t.acct, t.year, t.qtr, t.cnty
  from (select t.*, min(cnty) over (partition by acct, year, qtr) as min_cnty,
               max(cnty) over (partition by acct, year, qtr) as max_cnty
        from dbo.table t
       ) t
  where min_cnty <> max_cnty;