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 表单上计算年龄? [复制]