sql - 使用自连接查找 SQL 中的重复项
问题描述
我知道还有其他类似的问题。但是,我的问题是为什么我使用的查询没有返回最佳结果。下面是查询。为了给出上下文,我有一个包含 113 列/字段的表。但是,真正重要的只有 4 个;acct,年份,qtr,cnty(县)。此表是按机构列出的雇主列表。雇主可以出现不止一次。同一个人拥有 12 家星巴克就是最好的例子。我正在寻找的是一个查询,它将显示 acct 值何时具有不同的 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
预期结果
acct year qtr cnty
1234567777 2007 4 7
1234567777 2008 1 9
1234567890 2006 4 31
1234567890 2007 1 3
2345678901 2006 4 7
2345678901 2007 2 1
解决方案
这是你想要的吗?
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;
推荐阅读
- android - Braintree Drop-in UI:错误:无法解决:org.jfrog.cardinalcommerce.gradle:cardinalmobilesdk:2.2.1-2?
- if-statement - 谷歌电子表格有条件加入
- stripe-payments - 在 Zapier 中使用自定义请求创建 Stripe 退款
- postgresql - Postgres UPDATE:列名的混淆值
- java - DBRider 没有在新的测试类运行之前清理数据,我该如何解决这个问题?
- python - 将字符串转换为带有模式的几个变量
- c# - 列加载事件以设置子级边距
- ffmpeg - ffmpeg 到 Youtube Live 停止工作。ffmpeg 继续运行
- html - 将禁用属性传递给子组件中的 HTML 元素不起作用
- intellij-idea - 带有@GrailsCompileStatic 注解的Grails GORM 类在静态映射闭包表、版本、autoTimestamp 中显示为未解析符号