使用JET选择Distinct,不选择PKEY - 重复行

时间:2016-06-21 10:30:13

标签: sql excel jet

这个主题似乎有很多主题,但很少有人使用Excel。

我有一个简单的表格,我想从中选择:

  1. 理想情况下所有列,如果可能,使用*,如果用户添加新列,则不需要编辑SQL。 (这是一个梦想吗?)如果这样,指定所有返回列的解决方案就可以了。

  2. 仅返回[name]& [date](concatenated)不同的行

  3. 所有其他列我不关心返回哪一行。第一,最后,限制1 ......任何事情。它们是各种类型的混合物。

  4. 这不能创建新表或删除行,只需选择并加入

    name    date        sales
    andy    01/01/2010  100
    andy    01/01/2010  900
    andy    05/01/2010  100
    alex    02/02/2010  200
    alex    02/02/2010  200
    alex    05/01/2010  200
    dave    09/09/2010  300
    dave    09/09/2010  300
    dave    01/09/2010  300
    
  5. 此外,代码简单性优先于速度。这将是一个晚上跑得很好看,但很慢很好......而且excel没有数百万行!

    非常感谢大家。

    更新

    我希望这个表看起来像这样:

    name    date        sales
    andy    01/01/2010  100
    andy    05/01/2010  100
    alex    02/02/2010  200
    alex    05/01/2010  200
    dave    09/09/2010  300
    dave    01/09/2010  300
    
                or
    andy    01/01/2010  900
    andy    05/01/2010  100
    alex    02/....
    

    我可以选择所有这些独特的东西:

    SELECT MAX(joined)
        FROM
            (SELECT [Single$].[date] AS [date],
              [Single$].[name] AS [name],
               name & date AS [joined]
            FROM [Single$]
            )
    GROUP  BY joined
    HAVING MAX(joined) IS NOT NULL
    

    但是我不知道怎么以某种方式将它连接回原始表格,保持连接匹配的任何一行。我不知道加入是否是正确的方式?感谢

1 个答案:

答案 0 :(得分:1)

只需运行按[Name][Date]分组的汇总查询。对于所有其他列,运行MAX()MIN()这样的聚合,它应该适用于数值和字符串值。

SELECT  [Single$].[name] AS [name], [Single$].[date] AS [date],
        MAX([Single$].[sales]) As [sales],
        MAX(...)       
FROM [Single$]
GROUP BY [Single$].[name] AS [name], [Single$].[date] AS [date]