【问题标题】:Translating SQL Server code in to MS Access SQL code - DISTINCT issue [duplicate]将 SQL Server 代码转换为 MS Access SQL 代码 - DISTINCT 问题 [重复]
【发布时间】:2023-03-27 04:27:01
【问题描述】:

我在 SQL Server 中有一段代码需要在 MS Access 中使用,但由于无法在特定列/聚合函数上使用 DISTINCT,目前难以翻译它。

我尝试使用子查询来解决问题,但是我发现父案例 ID 的 COUNT 与子案例 ID 的计数相同(因为可以有多个具有相同父案例 ID 的子案例)。

这是在 SQL Server 中实现预期结果的代码:

SELECT
[Master_ID]
,COUNT(DISTINCT [parent_file_id]) AS Number_of_parent_files
,COUNT([Child_ID]) AS Number_of_child_files
FROM [EXAMPLE_TABLE]
GROUP BY [Master_ID]
ORDER BY 1

我希望看到所有主 ID 的列表、它们拥有的相应父文件 ID 数量以及所有父文件 ID 中有多少子文件的较低级别的详细信息。目前,当输入 Access 时,我无法在不影响父文件 ID 的情况下获得较低级别的详细信息。

【问题讨论】:

    标签: sql sql-server ms-access-2010


    【解决方案1】:

    我相信您必须在子查询中进行分组,然后计算结果。因此,您必须汇总您的 number_of_child_files 字段两次才能收集计数。

    SELECT 
        Master_ID, 
        Count(parent_file_id) as number_of_parent_files, 
        SUM(child_id_count) as number_of_child_files
    FROM (
            SELECT 
                Master_ID, 
                parent_file_id, 
                count(Child_ID) as child_id_count
            FROM EXAMPLE_TABLES
            GROUP BY Master_ID, parent_file_id
        ) as s
    GROUP BY Master_ID
    ORDER BY Master_ID;
    

    【讨论】:

      【解决方案2】:

      也许将 Distinct 与 Count(*) 分开处理。您可以尝试更改以下内容吗:

      发件人:

      COUNT(DISTINCT [parent_file_id]) AS Number_of_parent_files
      

      收件人:

      (Select Count(*) As cnt From (Select Distinct parent_file_id From [EXAMPLE_TABLE] As tbl)) AS Number_of_parent_files
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-26
        • 2018-04-15
        • 1970-01-01
        • 2021-09-14
        • 2019-02-23
        • 1970-01-01
        • 1970-01-01
        • 2016-08-30
        相关资源
        最近更新 更多