select
STUDIO.NAME, MOVIE.TITLE, MOVIE.YEAR
from
STUDIO
join
MOVIE on STUDIO.NAME = MOVIE.STUDIONAME
where
MOVIE.YEAR >= ALL (select MOVIE.YEAR from MOVIE)我有这个代码,它给了我上一部电影的年份,它的标题和制作这部电影的制片厂的名称。
我如何重写这段代码,这样我就可以得到每个制片厂的最后一部电影,而不仅仅是一个制片厂?
发布于 2015-04-21 18:46:34
尝试:
SELECT a.NAME,
a.TITLE,
a.YEAR
FROM (select s.NAME,
m.TITLE,
m.YEAR,
ROW_NUMBER()OVER(PARTITION BY s.NAME ORDER BY m.YEAR DESC ) as rnk
from STUDIO s
join MOVIE m on s.NAME = m.STUDIONAME) a
WHERE a.rnk = 1发布于 2015-04-21 19:06:12
SELECT *
FROM (
SELECT STUDIO.NAME, MOVIE.TITLE, MOVIE.YEAR
from
STUDIO
join
MOVIE on STUDIO.NAME = MOVIE.STUDIONAME
ORDER BY MOVIE.YEAR DESC
) AS newTable
GROUP BY newTable.NAME发布于 2015-04-21 18:28:29
上面的答案对于查找制片厂发布电影的最近年份是很好的,但是如果你也需要标题,使用这种方法,你需要使用某种形式的子选择来根据制片厂名称获得最大的年份(以及最近的年份),然后根据这个引入标题。
下面使用交叉应用以相当简洁的方式完成这两个操作:
SELECT
S.NAME,
MM.TITLE
MM.YEAR
FROM STUDIO S
CROSS APPLY
(SELECT TOP 1 TITLE, YEAR FROM MOVIE M
WHERE M.STUDIONAME = S.STUDIO
ORDER BY M.YEAR DESC) MM第一次编辑:添加上下文第二次编辑:添加编辑注释。
https://stackoverflow.com/questions/29769437
复制相似问题