2016-06-21 40 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