【问题标题】:How do I return Unique values only in an Access query for a specific field如何仅在特定字段的 Access 查询中返回唯一值
【发布时间】:2021-12-21 04:46:36
【问题描述】:

我有以下查询,我希望它只返回 Expr1 的唯一值

SELECT 
[tblA].fldA, 
[tblA].fldB, 
[tblA].fldC, 
[tblB].fldD, [tblB].fldE, 
[tblB].fldF, IIf([fldC]="CAO",[fldB]+" / "+[fldF],IIf([fldC]="PAX",[fldB]+" / "+[fldE],IIf([fldC]="LTQ",[fldB]+" / "+[fldD]))) AS Expr1
FROM 
tblA LEFT JOIN tblB ON [tblA].fldA = [tblB].[fldA];

在这里使用 DISTINCT 不起作用,因为我想要 Expr1 的唯一值 所以我的问题是: 有没有办法让这个查询只返回最后一列“Expr1”的唯一值?

【问题讨论】:

  • 当然,如果您知道要对其他行做什么。
  • 感谢 HoneyBadger!现在我看到了问题。我应该把其他专栏拿走。 SELECT DISTINCT [tblB].fldF, IIf([fldC]="CAO",[fldB]+" / "+[fldF],IIf([fldC]="PAX",[fldB]+" / "+[fldE],IIf([fldC]="LTQ",[fldB]+" / "+[fldD]))) AS Expr1 FROM tblA LEFT JOIN tblB ON [tblA].fldA = [tblB].[fldA];

标签: sql ms-access


【解决方案1】:

这个问题的答案:你不能。至少不像你描述的那样。

为什么?因为您需要弄清楚最后一列(或最后几列)的规则,因为它只返回一次。无论是最大值还是其他值都没有关系,但需要进行分组。

或者,您始终可以将DISTINCT 设为子查询,在WHERE 子句内使用IN 获取符合您的条件的行的IDs

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多