Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用ms access中的多个条件计数_Sql_Ms Access_Count - Fatal编程技术网

Sql 使用ms access中的多个条件计数

Sql 使用ms access中的多个条件计数,sql,ms-access,count,Sql,Ms Access,Count,我有下面的疑问 Select count(*) as poor from records where deviceId='00019' and type='Poor' and timestamp between #14-Sep-2012 01:01:01# and #24-Sep-2012 01:01:01# 桌子是这样的; id.设备id、类型、时间戳 数据是这样的 数据是这样的 1, '00019', 'Poor', '19-Sep-2012 01:01:01' 2, '00019', '

我有下面的疑问

Select count(*) as poor
from records where deviceId='00019' and type='Poor' and timestamp between #14-Sep-2012 01:01:01# and #24-Sep-2012 01:01:01#
桌子是这样的; id.设备id、类型、时间戳

数据是这样的

数据是这样的

1, '00019', 'Poor', '19-Sep-2012 01:01:01'
2, '00019', 'Poor', '19-Sep-2012 01:01:01'
3, '00019', 'Poor', '19-Sep-2012 01:01:01'
4, '00019', 'Poor', '19-Sep-2012 01:01:01'
我正在尝试计算具有特定类型的设备


请帮忙。。access总是返回错误的数据。它返回1,而00019有4个不良条目

如果您想统计具有特定类型的设备,而不考虑设备ID,则使用以下方法:

Select count(*) as excellent
from records where type='Poor'
Select count(*) as excellent
from records where deviceId='00019'

如果要统计具有特定deviceid的设备,而不考虑其类型,请使用以下方法:

Select count(*) as excellent
from records where type='Poor'
Select count(*) as excellent
from records where deviceId='00019'

Type和timestamp都是保留字,所以在查询中用方括号括起来,如下所示:[Type]和[timestamp]。我怀疑这些保留字是导致问题的原因,但很难准确预测保留字何时会导致查询问题,所以使用方括号排除这种可能性

除此之外,存储的文本值有时还包含额外的不可见字符。检查存储的文本值的长度,以查看是否有长度超过预期

SELECT
    Len(deviceId) AS LenOfDeviceId,
    Len([type]) AS LenOfType,
    Len([timestamp]) AS LenOfTimestamp
FROM records;
在注释中,您提到存储值中的空格ASCII值32。我一直认为我们在处理其他不可打印/看不见的字符。如果在存储的deviceId值的开头和/或结尾处有一个或多个实际空格字符,Trim函数将丢弃它们。因此,此查询将在两列中为您提供不同的长度编号:

SELECT
    Len(deviceId) AS LenOfDeviceId,
    Len(Trim(deviceId)) AS LenOfDeviceId_NoSpaces
FROM records;
如果存储的值还可以在字符串中包括空格,而不仅仅是在开头和/或结尾,Trim将不会删除这些空格。在这种情况下,可以使用Replace函数放弃所有空格。但是请注意,使用Replace的查询必须从Access应用程序会话内部运行,而不能从Java代码中使用它

SELECT
    Len(deviceId) AS LenOfDeviceId,
    Len(Replace(deviceId, ' ', '')) AS LenOfDeviceId_NoSpaces
FROM records;

如果该查询在两列中返回相同长度的数字,则我们不处理实际的空格字符ASCII值32。。。但是一些其他类型的字符看起来像空间

Id希望查询能够工作-请显示一些数据,以便我们可以查看您运行查询的内容,而不是您的查询,因为它只是将时间戳条件从deviceId='00019'和type='poor'记录中选择count*为poor,我希望它能够工作,因为您的字符串和访问时间戳之间很可能只有不一致,您剩余的查询是正确的。如果是最有可能的情况,只需查询时间戳格式即可更新您的问题,或者搜索它,您将很容易获得指导。@Sami:timestamp格式正确。汉瑟普:不,这是错的,让我纠正一下。好的。请不要说它是正确的。我没有被认领,我只是怀疑。但请告诉我,正如我在上面的评论中所说的,你已经尝试了这个没有时间戳的方法,它仍然是错误的吗?但检查后说。我希望它具有两个条件,也会像第三个条件的时间戳;喜欢在“20-09-2012”和“24-09-2012”之间,在这种情况下,您上面尝试的是正确的。我猜它返回的1 bcos 00019有1个类型为class='poor'的值,其余3将具有不同的类型。通过这种方式,可以从记录中检查、选择类型、计数*,其中deviceId='00019'按类型分组我已更新了查询和数据。。我没有得到正确的结果。我做错什么了吗?我正在使用ms Access关于空间,你是对的。。有些字符比正常字符多。如何修剪空白。请提供更多信息。哪些字段包含不可见字符?某些存储的文本值是否包含多个不可见字符?是否仅从Access应用程序会话中运行查询?或者查询也必须适合外部客户端使用。。。经典的ASP、Dot.Net、PHP、Java等?如果您可以清理存储的值,查询任务将更加容易。在您的情况下,这是一个合理的选择吗?存储的文本值包含的空格主要在deviceId和type中。我正在运行java应用程序中的查询,如何轻松地清理存储的值,手动更新100条记录是很困难的