我正在尝试编写一个简单的查询,该查询按天分组,用当天“有效”和“运行”点的计数填充一列,并用所有“有效”点的计数填充另一列。因此结果列将是:“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/