0

我有一个问题,我需要从 Access 中的一个表中选择三列来填充另一个表,但它只需要在一个列上是不同的。我按如下方式尝试了 GROUP BY

SELECT [Cust Reference], CustType, County
FROM CustInfo
WHERE [Cust Reference] LIKE "%20%" 
  AND [Cust Reference] LIKE "P1%" 
  AND CustType NOT LIKE "%expired%" 
  AND CustType <> ""
GROUP [Cust Reference], CustType, County;

但是当我在上面使用 SELECT INTO 并检查重复项时,会有一些。

我看过这篇文章 -在一列上选择 DISTINCT

但是该CustInfo表没有 ID 列,并且实际上不可能LIKE像上面的帖子所述那样做。我尝试了以下方法,它给了我我认为正确的输出和一列的计数

SELECT DISTINCT t1.[Cust Reference]
FROM CustInfo AS t1
WHERE t1.[Cust Reference] LIKE "%20%" 
  AND t1.[Cust Reference] LIKE "C1%" 
  AND t1.CustType NOT LIKE "%expired%" 
  AND t1.CustType <> ""

但是,当我尝试将其扩展为包括以下三列时,它不起作用。我复制CustInfoCustInfo_Temp工作加入。在此查询中需要更正什么以提取 [Cust Reference} 上仅具有 DISTINCT 的三列?

SELECT t2.[Cust Reference], CustType, County
FROM 
    (SELECT DISTINCT t1.[Cust Reference]
     FROM CustInfo AS t1
     WHERE t1.[Cust Reference] LIKE "%20%" 
       AND t1.[Cust Reference] LIKE "P1%" 
       AND t1.CustType NOT LIKE "%expired%" 
       AND t1.CustType <> "") AS t2
JOIN CustInfo_Temp ON t1.[Cust Reference] = t2.[Cust Reference]
4

1 回答 1

1

我不确定你真正想要什么,但聚合将保证每行[Cust Reference]

SELECT [Cust Reference], MAX(CustType), MAX(County)
FROM CustInfo
WHERE [Cust Reference] LIKE "%20%" AND
      [Cust Reference] LIKE "P1%" AND
      CustType NOT LIKE "%expired%" AND
      CustType <> ""
GROUP [Cust Reference];
于 2021-04-19T16:28:55.367 回答