2016-06-21 63 views
0

这个主题似乎有很多线程,但很少与Excel一起工作。选择独特使用JET和没有PKEY - 重复行

我有,我要选择一个简单的表:

  1. 理想即,使用*如果可能的话,所以如果用户添加了新列,他们并不需要修改SQL所有列。 (这是一个管道梦吗?)如果是这样,一个解决方案指定所有返回的列是好的。

  2. 只有在[名] & [日期](连续)是不同的

  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 
    

而且简化代码是首选超速。这将被留下来运行一夜,所以看起来不错,但速度很慢......并且excel没有数百万行!

非常感谢大家提前。

UPDATE

我希望表看起来像这样:

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 

但我不知道如何以某种方式将它加回到原始表中,以保持连接匹配的任何单个行。而且我不知道加入是否是正确的方式?谢谢

+0

使用该表数据,预期的结果是什么? – jarlh

+0

你能表现出努力吗?显示您尝试的代码?什么没有用? – mnwsmit

回答

0

只需运行由[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] 
+0

如何读取规范的部分内容,“选择...所有列即使用'*'...所以如果用户添加新列,他们不需要编辑SQL”? – onedaywhen

+0

这很理想,但也许不现实? – user3484792

+0

不幸的是,对于聚合查询,星号不起作用,因为您必须明确指定“GROUP BY”列或聚合列。那些其他列必须按照Min(),Max()等所述进行汇总。 – Parfait