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

如何用MS SQL统计各客户当月有记录的天数?

统计每个客户当月有记录的天数(MS SQL实现)

需求

编写MS SQL查询语句,统计数据集中每个客户在当月有记录的天数。

示例数据

DATE,ID,CUSTOMER
2023-02-01 00:30:00.000,1,A
2023-02-02 00:30:00.000,2,A
2023-02-03 00:30:00.000,3,A
2023-02-04 00:30:00.000,4,A
2023-02-01 00:30:00.000,5,B
2023-02-01 00:30:00.000,6,B
2023-02-01 00:30:00.000,7,B
2023-02-01 00:30:00.000,8,B
2023-02-02 00:30:00.000,9,A
2023-02-03 00:30:00.000,10,A

预期输出

Customer, Count
A,4
B,1

解决方案

核心思路是先提取日期的纯日期部分(去除时间),再对每个客户的日期去重后统计数量:

SELECT 
    CUSTOMER AS Customer,
    COUNT(DISTINCT CAST([DATE] AS DATE)) AS [Count]
FROM 
    YourTableName -- 替换为你的实际表名
WHERE 
    YEAR([DATE]) = 2023 -- 指定年份
    AND MONTH([DATE]) = 2 -- 指定月份
GROUP BY 
    CUSTOMER
ORDER BY 
    Customer;

说明

  1. CAST([DATE] AS DATE):将带时间的日期字段转换为仅包含年月日的日期类型,确保同一天内的多条记录不会被重复计数
  2. COUNT(DISTINCT ...):对每个客户的去重日期进行统计,得到有记录的天数
  3. WHERE子句:如果需要统计当前月份,可以替换为YEAR([DATE]) = YEAR(GETDATE()) AND MONTH([DATE]) = MONTH(GETDATE()),自动适配当前年月

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:05:10