如何在Access中使用SQL从同一列中获取三个计数值?
我有一个表,它有一个整数列,我试图从中获取一些计数。基本上,我需要从同一列中分离出四个计数。我需要返回的第一个值是,有多少记录的整数值存储在此列中,介于两个值(例如213和9999)之间,包括最小值和最大值。我需要返回的其他三个计数值只是此列不同值之间的记录计数。我试过做一些查询,比如如何在Access中使用SQL从同一列中获取三个计数值?,sql,ms-access,count,subquery,Sql,Ms Access,Count,Subquery,我有一个表,它有一个整数列,我试图从中获取一些计数。基本上,我需要从同一列中分离出四个计数。我需要返回的第一个值是,有多少记录的整数值存储在此列中,介于两个值(例如213和9999)之间,包括最小值和最大值。我需要返回的其他三个计数值只是此列不同值之间的记录计数。我试过做一些查询,比如 SELECT (SELECT Count(ID) FROM view1 WHERE ((MyIntColumn BETWEEN 213 AND 9999));) AS Value1, (SELECT Count(
SELECT (SELECT Count(ID) FROM view1 WHERE ((MyIntColumn BETWEEN 213 AND 9999));)
AS Value1, (SELECT Count(ID) FROM FROM view1 WHERE ((MyIntColumn BETWEEN 500 AND 600));) AS Value2 FROM view1;
例如,有十条记录的列值在213到9999之间。从这个查询返回的结果给了我10,但它给了我相同的值10618倍,这是表中的总记录数。我怎么可能只让它返回一条10的记录呢?SELECT
SELECT
COUNT(CASE
WHEN MyIntColumn >= 213 AND MyIntColumn <= 9999
THEN MyIntColumn
ELSE NULL
END) AS FirstValue
, ??? AS SecondValue
, ??? AS ThirdValue
, ??? AS FourthValue
FROM Table
计数(大小写)
当MyIntColumn>=213且MyIntColumn选择
计数(大小写)
当MyIntColumn>=213且MyIntColumn重新格式化时,您的查询如下所示:
SELECT (
SELECT Count(ID)
FROM view1
WHERE MyIntColumn BETWEEN 213 AND 9999
) AS Value1
FROM view1;
因此,您选择的子查询表达式与外部查询无关。对于view1
中的每一行,您计算view1
中的行数
相反,请尝试执行一次计算。您只需删除外部查询:
SELECT Count(ID)
FROM view1
WHERE MyIntColumn BETWEEN 213 AND 9999;
重新格式化后,您的查询如下所示:
SELECT (
SELECT Count(ID)
FROM view1
WHERE MyIntColumn BETWEEN 213 AND 9999
) AS Value1
FROM view1;
因此,您选择的子查询表达式与外部查询无关。对于view1
中的每一行,您计算view1
中的行数
相反,请尝试执行一次计算。您只需删除外部查询:
SELECT Count(ID)
FROM view1
WHERE MyIntColumn BETWEEN 213 AND 9999;
在下列情况下,使用Iif()函数而不是CASE
select Condition1: iif( ), condition2: iif( ), etc
注意:我在使用Access时通常做的是将iif()解析为1或0,然后执行SUM()以获取计数。迂回,但它在使用聚合时效果更好,因为它避免了null。使用iif()函数,而不是在
select Condition1: iif( ), condition2: iif( ), etc
注意:我在使用Access时通常做的是将iif()解析为1或0,然后进行求和()以获得计数。迂回,但由于避免了空值,因此聚合更有效。MS Access中的OLEDB连接不支持关键字大小写和时间
只能使用iif()函数对同一列中的两个、三个..值进行计数
SELECT Attendance.StudentName, Count(IIf([Attendance]![Yes_No]='Yes',1,Null)) AS Yes, Count(IIf([Attendance]![Yes_No]='No',1,Null)) AS [No], Count(IIf([Attendance]![Yes_No]='Not',1,Null)) AS [Not], Count(IIf([Attendance]![Yes_No],1,Null)) AS Total
出席人数
按出勤率分组。MS Access中的StudentName;OLEDB连接不支持关键字大小写和时间
只能使用iif()函数对同一列中的两个、三个..值进行计数
SELECT Attendance.StudentName, Count(IIf([Attendance]![Yes_No]='Yes',1,Null)) AS Yes, Count(IIf([Attendance]![Yes_No]='No',1,Null)) AS [No], Count(IIf([Attendance]![Yes_No]='Not',1,Null)) AS [Not], Count(IIf([Attendance]![Yes_No],1,Null)) AS Total
出席人数
按出勤率分组。StudentName;我需要返回的其他三个计数值只是此列不同值之间的记录计数
。请更清楚地说明此要求。我已重新编辑查询,以显示它只是第一个子查询的重复,但根据整数值获得不同的计数提供用于在之间搜索。我需要返回的其他三个计数值只是此列不同值之间的记录计数
。请更清楚地说明此要求。我已重新编辑查询,以显示它只是第一个子查询的重复,但根据提供的整数值获得不同的计数在之间搜索。你能在ACCESS SQL中重复此操作吗?ACCESS似乎不允许我使用CASE WHEN。你能在ACCESS SQL中重复此操作吗?ACCESS似乎不允许我使用CASE WHEN。因此,如果我要写入选择计数(IIF(MyIntColumn>=213和MyIntColumn),请参阅我的P.S.以了解执行此操作的方法。因此,如果我要写入选择计数(IIF(MyIntColumn>=213和MyIntColumn请参阅我的P.S.以了解执行此操作的方法。