每天计数返回错误值

Posted

技术标签:

【中文标题】每天计数返回错误值【英文标题】:Count for each day return wrong value 【发布时间】:2021-07-08 03:32:51 【问题描述】:

以下代码每天计数 1,从今天(2021 年 4 月 13 日)到月底累加,周六、周日和工作日的总和。

;WITH mycte AS (
    SELECT  GETDATE() DateValue
    UNION ALL
    SELECT DateValue + 1
    FROM mycte
    WHERE DateValue < EOMONTH(dateadd(day,-1, getdate()))
)

select
   count(case when datepart(dw, DateValue) = 1 then 1 end) SunCount
 , count(case when datepart(dw, DateValue) = 7 then 1 end) SatCount
 , count(case when datepart(dw, DateValue) between 1 and 7 then 1 end) WeekCount
from mycte

对于今天(2021 年 4 月 13 日),我预计周六 = 2、周日 = 2 和工作日为 14,但到 4 月底我得到了 18 - 为什么?

【问题讨论】:

【参考方案1】:

我认为这是因为 'between' 又包括 1 和 7,下面的查询应该给你剩余的 14 周天数

;WITH mycte AS (
    SELECT  GETDATE() DateValue
    UNION ALL
    SELECT DateValue + 1
    FROM mycte
    WHERE DateValue < EOMONTH(dateadd(day,-1, getdate()))
)

select
   count(case when datepart(dw, DateValue) = 1 then 1 end) SunCount
 , count(case when datepart(dw, DateValue) = 7 then 1 end) SatCount
 , count(case when datepart(dw, DateValue) between 2 and 6 then 1 end) WeekCount
from mycte

【讨论】:

是的,我进行了更改并看到了您的答案

以上是关于每天计数返回错误值的主要内容,如果未能解决你的问题,请参考以下文章

在 django 中使用过滤计数而不是连接表返回错误值

apache在发布请求时返回403错误,输入变量计数保持不变,值发生变化

两个日期之间每天未结订单的 SQL 计数

为啥在第一次 Fetch 后出现字段计数不匹配错误?

BigQuery 上传作业返回错误 - 有效负载部分计数错误?

WSAGetLastError()的返回值