如何在 ms access 中计算不同的组?

问题描述

SELECT [dataset].[ID],count(distinct([dataset].dates)) AS distinct_dates
FROM [dataset]
GROUP BY [dataset].[ID];

这给出了错误 UnDefined function distinct in expression

解决方法

您可以使用两个级别的聚合:

SELECT [dataset].[ID],COUNT(*) AS distinct_dates
FROM (SELECT DISTINCT id,dates
      FROM [dataset]
     ) as d
GROUP BY [dataset].[ID];

严格来说这不是 100% 相同,因为这会将 NULL 计为一个单独的值(但 count(distinct) 会忽略 NULL 值)。因此,要相同,您需要使用:

SELECT [dataset].[ID],COUNT(dates) AS distinct_dates