首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较去年和今年的结果

比较去年和今年的结果
EN

Stack Overflow用户
提问于 2017-08-14 16:54:03
回答 2查看 51关注 0票数 1

我需要一些查询方面的帮助。我有一个如下所示的结果集:

表结构:

代码语言:javascript
复制
 GEO | YEAR | INS
 ---------------------------
 Ams | 2016 | something wrong1
 Ams | 2016 | something wrong2
 Ams | 2017 | something wrong1

我需要得到一个结果集,如果在2016年有'Something wrong1‘的地理位置’a‘,在2017年我们再次有'Something wrong1’相同的地理位置‘a’。向我显示地理位置'AMS‘

本质上,我需要比较2016年的结果集和2017年的结果集。如果同样的GEO在2016年和2017年都有同样的不足,那么查询需要向我显示该Geo。

任何帮助都将不胜感激

到目前为止我得到的查询:

代码语言:javascript
复制
select Geo
from (
    select Geo
    from dbo.results
    WHERE (INS in ('something wrong1', 'something wrong2'))
) as res 
Group by Geo
having count(*) > 1

但这只显示了两倍的Geo,它没有查看INS列。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-14 17:14:03

您应该能够使用selfjoin完成此操作,如下所示:

代码语言:javascript
复制
SELECT Geo
  FROM dbo.results t1
  JOIN dbo.results t2
    ON t1.GEO = t2.GEO
   AND t1.INS = t2.INS
   AND t1.YEAR <> t2.YEAR
 GROUP BY Geo
票数 1
EN

Stack Overflow用户

发布于 2017-08-14 18:44:55

您可以使用聚合来完成此操作:

代码语言:javascript
复制
select Geo
from dbo.results
where ins = 'something wrong1' and
      year in (2016, 2017)
group by Geo
having count(distinct year) = 2;

我不确定'something wrong2'和这个问题有什么关系。

如果您只想在两年内获得相同的ins,您可以这样做:

代码语言:javascript
复制
select Geo, ins
from dbo.results
where year in (2016, 2017)
group by Geo, ins
having count(distinct year) = 2;

这将同时返回Geoins

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45670787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档