Microsoft Access如何计算一个值及其在字段中列出的所有排列的次数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Microsoft Access如何计算一个值及其在字段中列出的所有排列的次数?相关的知识,希望对你有一定的参考价值。

我有一个表,该表中有一个名为Results的字段,其值为3位数字。我已经使用了count函数来报告该查询在所述字段中重复值的次数。

SELECT [My Table].Results, Count([My Table].Results) AS [Total Results]
FROM [My Table]
GROUP BY [My Table].Results;

我如何使用计数功能还返回也在字段中重复的3位数字的所有组合?

示例

Results    Count

123        1
132        1
213        1
789        1
798        1
879        1
897        1

查询后,我希望显示该字段中所有值的计数。

Results  Count

123      3
132      3
213      3
789      4
798      4
879      4
897      4

答案

您可以将表本身连接起来,并检查连接记录中是否存在字母

SELECT [parent].Results, Count([parent].Results) AS [Total Results]
FROM (SELECT DISTINCT Results FROM [My Table]) parent, [My Table] child
WHERE 
          child.Results = Left(parent.Results, 1) & Mid(parent.Results, 2, 1) & Right(parent.Results, 1) OR
          child.Results = Left(parent.Results, 1) & Right(parent.Results, 1) & Mid(parent.Results, 2, 1) OR
          child.Results = Mid(parent.Results, 2, 1) & Left(parent.Results, 1) &  Right(parent.Results, 1) OR
          child.Results = Mid(parent.Results, 2, 1) & Right(parent.Results, 1) & Left(parent.Results, 1) OR
          child.Results = Right(parent.Results, 1)  & Left(parent.Results, 1) & Mid(parent.Results, 2, 1) OR
          child.Results = Right(parent.Results, 1) & Mid(parent.Results, 2, 1) & Left(parent.Results, 1)
GROUP BY parent.Results

这将为每个父行复制包含父行的每个符号的子行数,然后计算行数。

或者,您可以使用子查询,但是此解决方案的性能可能会更快。

另一答案

创建此查询:

SELECT t.Results, MIN(t.c) & (VAL(LEFT(Results,1))+VAL(MID(Results,2,1))+VAL(RIGHT(Results,1))-MIN(t.c)-MAX(t.c)) & MAX(t.c) AS c
FROM (
  SELECT Results, LEFT(Results, 1) AS c FROM [My Table] UNION ALL   
  SELECT Results, MID(Results, 2, 1) FROM [My Table] UNION ALL   
  SELECT Results, RIGHT(Results, 1) FROM [My Table] 
)  AS t
GROUP BY t.Results;

并将其另存为“我的查询”。然后对此[我的查询]和group by Results进行自我联接:

SELECT q1.Results, COUNT(*) AS [Count] 
FROM [My Query] AS q1 INNER JOIN [My Query] AS q2 
ON q2.c = q1.c 
GROUP BY q1.Results

以上是关于Microsoft Access如何计算一个值及其在字段中列出的所有排列的次数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Microsoft Access 中通过 VBA 设置 INSERT SQL 查询的参数值?

您如何计算 Microsoft Access SQL 查询中的连续日期?

如何通过 JDBC 将值插入 Microsoft Access 数据库?

如何在 Microsoft Access 表单上计算年龄? [复制]

如何允许通过 Microsoft Access 中的组合框向表中添加值?

Microsoft Access 表单保存记录