2017-06-03 8 views
1

I have the following table named 'MoviesInStock'二つの異なる列

の最大値を選択すると、私は先月から最新の映画を選択したいと思います。 この場合、彼は最新のものであるため、結果は映画「The Mummy」のみである必要があります。

SELECT MovieName 
FROM MovieInStock 
WHERE Month = (SELECT MAX(Month) FROM MovieInStock) AND 
     (SELECT MovieName FROM MovieInStock WHERE Year = (SELECT MAX(Year) FROM MovieInStock)) 

をしかし選ぶAND演算子は、そのスマートではなかった。

私は次のクエリをしようとしていました。また、Max Yearを選択するためにSELECT INTO #を使用して一時テーブルを作成しようとしていましたが、Max Monthを選択するために一時テーブルを作成しようとしていましたが、

+1

編集あなたの質問であり、サンプルデータと望ましい結果を提供します。 –

答えて

1

問題を複雑にしています。 TOPORDER BYを使用できます。

あなたが「映画」と言うので:

select top (1) with ties mis.* 
from movieinstock mis 
order by year desc, month desc 
+0

正しい。私はおそらく次回はもっと簡単に考えるべきです。 –

0

他のソリューションは、より良いはゴードン・ソリューション

with maxdt as (
select MAX(Month) MaxMonth, MAX(Year) MaxYear FROM MovieInStock 
) 
SELECT top 1 MovieName 
FROM MovieInStock f1 
inner join maxdt f2 on f1.Month=f2.MaxMonth and f1.Year=MaxYear 
関連する問題