2017-06-03 212 views
1

I have the following table named 'MoviesInStock'选择两列不同的最大值

我想选择上个月的最新电影。 在这种情况下,结果应该只是电影“木乃伊”,因为他是最新的。

我试图在下一个查询:

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

但是选择与运营商并没有那么聪明。我也在尝试使用SELECT INTO #来创建一个临时表格,用于选择Max Year,然后在临时表格上选择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