【问题标题】:Access query distinct record when all rows same当所有行相同时访问查询不同的记录
【发布时间】:2015-03-31 21:29:40
【问题描述】:

不知道如何正确表达问题/描述,所以会举例提问。

在 Access 中,如果(2 列)select distinct 的所有行都相同,我需要运行查询以返回一条记录。

所以:

风格 |标记

123 |是的

123 |否

123 |是的

456 |是的

456 |是的

456 |是的

789 |否

789 |否

789 |否

我只想返回 456 一次,因为所有版本的 '456' 样式都有一个标志 = 'Y'。不会返回样式“123”,因为它混合了“Y”和“N”。不应返回样式“789”,因为所有实例都是“N”。我只是想返回“所有'Y',只有'Y'记录”

【问题讨论】:

    标签: ms-access select distinct


    【解决方案1】:

    将查询分成 3 部分

    第 1 部分,按样式和标志分组(计算行以获取信息)将其保存为 Query1

    SELECT Table1.Style, Table1.Flag, Count(Table1.ID) AS CountOfID
    FROM Table1
    GROUP BY Table1.Style, Table1.Flag;
    

    第 2 部分 - 按样式分组,计算标志记录的数量,然后过滤以仅显示标志计数为 1 的记录。将其保存为 Query2

    SELECT Query1.Style, Count(Query1.Flag) AS CountOfFlag
    FROM Query1
    GROUP BY Query1.Style
    HAVING (((Count(Query1.Flag))=1));
    

    第 3 部分 - 加入原始表格,并过滤以仅显示带有 Y 标志的样式。

    SELECT Table1.Style, Table1.Flag
    FROM Query2 INNER JOIN Table1 ON Query2.Style = Table1.Style
    GROUP BY Table1.Style, Table1.Flag
    HAVING (((Table1.Flag)="Y"));
    

    (Table1、Query1、Query2、Query3 名称可以替换为对您的问题集更有意义的名称)。

    【讨论】:

    • 谢谢 - 这行得通,但给我的数据比我在结果集中需要的多。我未能包含更多示例数据来说明我的观点/问题。如果您将第三种样式添加到组合中,该样式仅将标志设置为“N”,该样式也将在结果集中返回。我想过滤掉这些记录 - 只显示所有相同的地方,并且所有 =“Y”。所以:789 | N 789 | N 789 | N 会以当前状态显示,但我需要将它们过滤掉。我会将条件放在哪里只查找 Style="Y"?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 2022-11-14
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2015-11-20
    • 2016-10-12
    相关资源
    最近更新 更多