当前位置:  开发笔记 > 编程语言 > 正文

SQL按最近日期选择行

如何解决《SQL按最近日期选择行》经验,为你挑选了3个好方法。



1> Mitchel Sell..:

您可以使用GROUP BY按类型和ID对项目进行分组.然后,您可以使用MAX()聚合函数来获取最近的服务月份.下面返回带有ChargeId,ChargeType和MostRecentServiceMonth的结果集

SELECT
  CHARGEID,
  CHARGETYPE,
  MAX(SERVICEMONTH) AS "MostRecentServiceMonth"
FROM INVOICE
GROUP BY CHARGEID, CHARGETYPE


这是完美的.谢谢!
你会得到一个额外的行返回.根据他的要求,这是期望的结果.
好吧,如果表中有一行101 N 1/1/2008会发生什么?

2> tvanfosson..:

所以这不是请求者所要求的,而是"SQL按最近日期选择行"的答案.

修改自http://wiki.lessthandot.com/index.php/Returning_The_Maximum_Value_For_A_Row

SELECT t.chargeId, t.chargeType, t.serviceMonth FROM( 
    SELECT chargeId,MAX(serviceMonth) AS serviceMonth
    FROM invoice
    GROUP BY chargeId) x 
    JOIN invoice t ON x.chargeId =t.chargeId
    AND x.serviceMonth = t.serviceMonth



3> Ben Hoffstei..:
SELECT chargeId, chargeType, MAX(serviceMonth) AS serviceMonth 
FROM invoice
GROUP BY chargeId, chargeType

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有