繁体   English   中英

从表中显示每个出版商的最新出版书籍的查询

[英]A query that shows latest published books from each publisher from a table

我正在尝试编写一个查询,从这样的表中显示每个出版商的最新出版书籍

书号 名称 出版商 出版年份
61523 时间:2019-05-06 标签:c++ 皮尔逊 2018年
54681 Python sybex 2017年
45168 sql 悦刻 2019年
79137 C# 麦克米伦 2016年
89451 中央社 皮尔逊 2020年
45187 图 1 悦刻 2021年
16497 中央电视台 sybex 2018年
19437 照片 2 企鹅 2019年

查询中所需的表应该是:

出版商 名称
皮尔逊 中央社
sybex 中央电视台
悦刻 图 1
麦克米伦 C#
企鹅 照片 2

这是使用窗口函数的一种方法:

select * from (
   select * , row_number() over (partition by publisher order by PublishYr desc) rn
   from tablename
) t where rn = 1 

如果您使用SELECT TOP(1) WITH TIES则查询不需要子查询。

select top(1) with ties publisher, book_name, 
                   row_number() over (partition by Publisher 
                                      order by PublishYr desc) rn
from TableWithData
order by rn;

获取每个发布者的最大年份作为子查询并加入源表。

Select tablename.Publisher, tablename.Name
From tablename
Inner Join (
    Select max(PublishYr) As MaxPublishYr, Publisher
    From tablename 
    Group By Publisher
) as Subqry on Subqry.Publisher = tablename.Publisher
    and Subqry.MaxPublishYr = tablename.PublishYr

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM