You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SQL Server中统计ID在指定日期及之后的出现次数

解决方案:统计ID在指定日期及之后的出现次数

这个需求很常见,咱们可以通过关联两张表+分组统计的方式轻松实现,具体步骤如下:

先明确两张表的数据

distinct表(唯一ID及对应基准日期):

iddate
a2017-01-01
b2016-01-01
c2017-01-01

log表(ID的所有出现日志):

iddate
a2017-01-01
a2016-01-01
b2017-01-01
c2017-01-01
b2016-01-01
b2015-01-01

实现SQL语句

SELECT 
    d.id,
    COUNT(l.id) AS count
FROM 
    `distinct` d
INNER JOIN 
    log l ON d.id = l.id
WHERE 
    l.date >= d.date
GROUP BY 
    d.id
ORDER BY 
    d.id;

代码说明

  1. 用INNER JOIN将两张表通过id关联,确保只处理两张表都存在的ID(如果需要保留distinct表中所有ID,哪怕对应日期后没有日志,换成LEFT JOIN即可);
  2. WHERE子句过滤出log表中日期大于等于distinct表对应ID基准日期的记录;
  3. 最后按id分组,用COUNT(l.id)统计符合条件的日志条数(用l.id而不是*是为了避免LEFT JOIN时统计到NULL值)。

执行结果

idcount备注
a12017-01-01及之后的记录数
b22016-01-01及之后的记录数
c12017-01-01及之后的记录数

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:41:57