几列中的最小日期

时间:2015-05-26 17:11:42

标签: sql count min

我试图计算每月发布的一系列政策。这接近返回正确的信息:

SELECT count(policy_no), left(issue_date,6)
FROM table_a
WHERE indicator = 'fln'
GROUP BY left(issue date,6)

指标正在缩小到我想要的政策类型。我唯一的问题是随着政策的更新,每年都会有一个相同政策编号的条目。我只需计算每个政策的最低发行日期,而不是每次都计算每个政策。如果政策是在2010年11月发布的,我希望它计算一次,而不是一次计算2010年11月,2012年,2012年等。发行日期的格式为yyyymmdd。只有年和月是相关的。

我确信这对于你们中经验丰富的人来说很容易,我还没有能够通过这个论坛上的其他问题把它拼凑起来。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

这样的东西会得到你想要的东西:

SELECT LEFT(FirstIssued, 6) AS YYMM, COUNT(DISTINCT Policy_No) AS NumPolicies
  FROM 
  (
    SELECT Policy_No, MIN(issue_date) AS FirstIssued
      FROM table_a
    WHERE indicator = 'fln'
    GROUP BY Policy_No
  ) A
GROUP BY LEFT(FirstIssued,6)

关键是在聚合计数之前首先找到每个策略的最小日期。请注意,您出现的唯一月份是至少有一个政策,所以如果您希望有0,则需要添加日期生成器。