sql - 如何 "count"表中同一列的两个不同标准?

标签 sql ms-access

我正在尝试编写一个简单的查询,该查询按天分组,用当天“有效”和“运行”点的计数填充一列,并用所有“有效”点的计数填充另一列。因此结果列将是:“Day”、“RunNum”、“TotalNum”。它从包含“TheDate”、“Running”和“ValidPoint”列的表中读取。

我可以通过更改“FROM”语句来单独创建“RunNum”和“TotalNum”列,以适应该列的特定条件。然而,我是 SQL 的初学者,我需要一些关于如何从一个表中读取两个不同条件的指导。

这是我为创建 RunNum 编写的内容:

SELECT TheDate AS Day, count(Running) AS RunNum
FROM Source_Table
WHERE Running = "Runtime" AND ValidPoint = "yes"
GROUP BY TheDate;

创建 TotalNum:

SELECT TheDate AS Day, count(Running) AS TotalNum
FROM Source_Table
WHERE ValidPoint = "yes"
GROUP BY TheDate;

我尝试使用 this post 中概述的 SUM(CASE WHEN...) 方法,但当我尝试运行它时,它不断抛出语法错误消息:

SELECT TheDate As Day, SUM(CASE WHEN Running = "Runtime" THEN 1 ELSE 0 END) AS RunNum, COUNT(Running) AS TotalNum
FROM Source_Table
WHERE ValidPoint = "yes"
GROUP BY TheDate;

我怀疑我需要在 from 语句中使用表“别名”,但到目前为止我读到的有关它们的所有内容都令人困惑。任何有关进一步研究正确方向的帮助或指导将不胜感激。感谢您花时间阅读本文!

最佳答案

在 MS Access 中,条件聚合使用 IIF() 而不是 CASE:

SELECT TheDate As Day,
       SUM(IIF(Running = "Runtime", 1, 0)) AS RunNum,
       COUNT(*) AS TotalNum
FROM Source_Table
WHERE ValidPoint = "yes"
GROUP BY TheDate;

关于sql - 如何 "count"表中同一列的两个不同标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56673731/

相关文章:

MYSQL 左连接相关表

java - 澄清 Java/SQLite 批处理和自动提交

c# - SQL语句中语法错误的问题

sql - 将数据导入mysql的最佳方法

sql - access sql中的自动增量不起作用

sql - 根据第二列的通用数据检索第一列的行

sql - 如何将行插入到新表中并更新传输项目的主键?

sql - 选择列,如果空白从另一个选择

ms-access - 在 ms access 中调用 oracle 存储过程而不在直通查询中保存密码

c# - 从 Access 数据库收集数据