查找特定值的出现次数

时间:2015-01-09 23:14:00

标签: sql filemaker

我正在尝试在FileMaker Pro 13中创建一个字段(计算结果),该字段将返回在特定字段中选择特定值的次数。

例如:

假设你有表1.表1只有一个名为Field 1的字段。字段1是一个下拉列表字段,带有选项“A”,“B”和& “C”。以下数据来自表1的记录,使用字段1:

记录1:表1 ::字段1 =“A”

记录2:表1 ::字段1 =“A”

记录3:表1 ::字段1 =“B”

记录4:表1 ::字段1 =“C”

我想要的是一个计数器,用于搜索表1的记录,并查找选择某个选项的次数。例如,我想知道在字段1中选择了多少次“A”,它将返回“2”。

我到目前为止尝试做的是以下但是它没有那么热(返回“?”):

的ExecuteSQL(

“SELECT Field 1

FROM表1

WHERE字段1 ='A'“

“;”, “”)

有关正确SQL脚本的任何建议吗?

2 个答案:

答案 0 :(得分:1)

执行的正确版本

ExecuteSQL(

"SELECT Count(\"Field 1\")

FROM \"Table 1\"

WHERE \"Field 1\" = ?"

;"";"";"A")

当您使用ExecuteSQL时,您将字符串传递给FileMaker的函数,然后在幕后,FileMaker使用该字符串以及您为其提供的各种其他部分来执行操作。

如果您的字段或表名中有空格,例如Field 1,FileMaker认为您的意思是"选择字段名称Field和名为1的字段。如果字段名称包含空格或特殊字符,则需要引用字段名称,但是您不能使用常规双引号,因为这会结束字符串。

解决问题的方法就是我上面所做的;转义字段或表名周围的双引号。

此外,底部的?"A"允许您将数据传递到查询中,即参数化查询。这意味着你可以做一个循环,循环的每次迭代都传递给我有"A"的不同值。例如。你可以这样做:

ExecuteSQL(

"SELECT Count(\"Field 1\")

FROM \"Table 1\"

WHERE \"Field 1\" = ?"

;"";""; Table 1::Search Field)

ExecuteSQL(

"SELECT Count(\"Field 1\")

FROM \"Table 1\"

WHERE \"Field 1\" = ?"

;"";"";$searchValue)

但是要小心,如果您在服务器/客户端环境中,ExecuteSQL不会缓存它所记录的记录,因此如果您在表中有大量记录,这个计算可能会变得非常缓慢,你&# 39;重新过去,或两者兼而有之。我建议尝试以不同的方式获得计数。

答案 1 :(得分:0)

Select count(*) from Table1 where Field1='A'