选择两个不同列的最大值

时间:2017-06-03 11:53:13

标签: sql sql-server

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运算符并不那么聪明。我还尝试使用SELECT INTO #创建一个临时表来选择Max Year,然后在temp表上选择Max Month,但随后它变得很复杂。

2 个答案:

答案 0 :(得分:1)

你的问题太复杂了。您可以将TOPORDER BY一起使用。

因为你说“电影”:

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

答案 1 :(得分: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
相关问题