sql-server - SQL Server:选择不同的日期加上条件和计数
问题描述
我希望从一列中选择和计算不同的天数,并排除在另一列中具有特定值的天数。
表结构是这样的;
+-------------------------+-------------------------+
| DAY | CHECK |
+-------------------------+-------------------------+
| 2018-07-18 00:00:00.000 | 2018-07-18 12:46:35.000 |
| 2018-07-19 00:00:00.000 | 2018-07-19 15:58:14.000 |
| 2018-07-20 00:00:00.000 | 2018-07-20 15:52:57.000 |
| 2018-07-21 00:00:00.000 | 2018-07-21 00:00:00.000 |
| 2018-07-23 00:00:00.000 | 2018-07-23 08:54:49.000 |
| 2018-07-23 00:00:00.000 | 2018-07-23 12:52:41.000 |
| 2018-07-26 00:00:00.000 | 2018-07-26 08:55:34.000 |
+-------------------------+-------------------------+
因此,预期的结果将是 DAY 列中不同天数的计数,并且在该计数中排除 CHECK 列中具有此时间 00:00:00.000 的所有天。
在这种情况下,计数结果将是 5 天
我设法计算了天数,但还没有弄清楚检查列的条件部分
COUNT(DISTINCT DAY) AS 'TotalDays',
解决方案
这个怎么样:
SELECT COUNT(DISTINCT [DAY]) AS 'TotalDays'
FROM tbl
WHERE [CHECK] <> DATEADD(day, DATEDIFF(day, 0, [CHECK]), 0);
查看您的示例数据,也许 WHERE 子句WHERE [CHECK] <> [DAY]
就足够了。
推荐阅读
- visual-studio-2019 - 在没有管理员权限的情况下安装 .NET 5
- javascript - 克隆字段jquery上的多个日期选择器冲突
- python - 如何将 udp 数据包转换为 rtp 并使用套接字发送
- jsf-2.2 - JSF 配置:支持的语言环境不起作用
- php - 如何比较数组的元素
- python - 如何在前端部分 django 中使用身份验证 api
- oracle - 试图创建一个函数 - 但出现此错误。PL/SQL:语句被忽略 10/8 PLS-00382:表达式类型错误
- r - R中的文档包
- javascript - 如何使用输入类型=范围自定义滚动条
- python - Heroku python with worker:如何传输数据