繁体   English   中英

选择1+最近的行

[英]Select 1+ most recent rows

给出的是带有文章的表格。 下面的示例性表格包含一篇不同版本的文章:

ID     ARTICLE_NUMBER   STORE_ID   COUNTRY   TYPE   VALID_FROM
----------------------------------------------------------------
100    1                22         DE        A      2015-11-01
101    1                22         DE        A      2015-11-02
102    1                22         DE        A      2015-11-03
103    1                22         DE        A      2015-11-04
104    1                22         DE        B      2015-11-10
105    1                22         DE        B      2015-11-11
106    1                22         DE        B      2015-11-11

我需要的是一个仅返回文章ID的查询

  • article_number = 1 AND
  • store_id = 22 AND
  • country ='DE'AND
  • 最新的valid_from时间戳。

到目前为止,查询应返回ID = 105或106(两者都具有相同的有效日期),但无论结果如何,我都只希望一个或另一个在我的结果中,无论哪个,但都不是两个。 AND:因为本文有两种类型(A + B),所以我的结果集中也需要ID = 103。

查询的外观如何?

您可以在过滤器中尝试使用HAVING参数,然后选择MAX(ID)

或带有子选择:

SELECT [Type],(SELECT TOP(1) ID from dbo.articles S WHERE S.[Type] = A.Type AND S.Valid_From = MAX(A.Valid_From))
FROM dbo.articles A
WHERE 
    ARTICLE_NUMBER = 1
    AND STORE_ID = 22
    AND Country = 'DE'
    -- AND Valid_FROM = (SELECT MAX(VALID_FROM) FROM dbo.articles)
GROUP BY [Type]

暂无
暂无

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

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