首页 > 解决方案 > 当到期日总是在每个月的最后一天时,查找不同的 ID

问题描述

ID我必须在每个 ID 的整个历史记录中找到不同的 s,其截止日期总是在每个月的最后一天。
假设我有以下数据集:

  ID  DUE_DT
  1   1/31/2014
  1   2/28/2014
  1   3/31/2014
  1   6/30/2014
  2   1/30/2014
  2   2/28/2014
  3   1/29/2016
  3   2/29/2016

我想在 SQL 中编写一个代码,这样它就可以为我ID = 1提供这个特定ID的截止日期总是在每个给定月份的最后一天。

最简单的方法是什么?

标签: sqldistinct

解决方案


MySQL 版本(感谢@Gordon Linoff)

SELECT
    ID
FROM
    <table>
GROUP BY
    ID
HAVING
    SUM(IF(day(DUE_DT + interval 1 Day) = 1, 1, 0)) = COUNT(ID);

原答案:

SELECT MAX(DUE_DT) FROM <table> WHERE ID = <the desired ID>

或者如果您想要每个唯一 ID 的所有 MAX(DUE_DT)

SELECT ID, MAX(DATE) FROM <table> GROUP BY ID


推荐阅读