2017-08-14 9 views
1

私はクエリでいくつかの助けが必要です。 私はこのようになり、結果セットがあります。昨年と今年の結果を比較してください。

表Stucture:

GEO | YEAR | INS 
--------------------------- 
Ams | 2016 | something wrong1 
Ams | 2016 | something wrong2 
Ams | 2017 | something wrong1 

私は2016年にGEO「AMS」の「何かのwrong1」と2017年、我々があった場合の結果を設定取得する必要がありますが同じジオ 'AMS'についてもう一度「何か間違った1」を持っています。私を表示 ジオ「AMS」

私は同じジオのために、我々は、クエリのニーズ2016年と2017年に同じ不足がある場合は2016の結果セットと2017 の結果セットを比較する必要が本質的には

そのGEOを私に見せてください。

すべてのヘルプは、私がこれまでに得た

問い合わせいただければ幸いです。

select Geo 
from (
    select Geo 
    from dbo.results 
    WHERE (INS in ('something wrong1', 'something wrong2')) 
) as res 
Group by Geo 
having count(*) > 1 

をしかし、これは私だけ、それはINS欄を見ていない二重のあるジオを示しています。

+2

サンプルテーブルのデータと期待される結果が書式付きテキストとして表示されます。現在のクエリの試行も表示してください。 – jarlh

+0

あなたはどのDBを使用していますか? – Prathyush

+0

@jarlh私はそれをどのようにすることができますか? – Vico

答えて

1

あなたはselfjoinでこれを行うことができるはず、のようなもの:あなたはこの使用して集計を行うことができます

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

私はこのクエリがトリックを参照してください見ることができます! RealCheeseLordに感謝します! – Vico

+0

うまくいけば、答えとしてマークすることもできます:D – RealCheeseLord

0

select Geo 
from dbo.results 
where ins = 'something wrong1' and 
     year in (2016, 2017) 
group by Geo 
having count(distinct year) = 2; 

を私は'something wrong2'が関係しているかわからないです質問。

あなただけが行うことができます、2年後に同じinsをしたい場合:

select Geo, ins 
from dbo.results 
where year in (2016, 2017) 
group by Geo, ins 
having count(distinct year) = 2; 

これはGeoinsの両方を返します。

関連する問題