这个主题似乎有很多主题,但很少有人使用Excel。
我有一个简单的表格,我想从中选择:
理想情况下所有列,如果可能,使用*,如果用户添加新列,则不需要编辑SQL。 (这是一个梦想吗?)如果这样,指定所有返回列的解决方案就可以了。
仅返回[name]& [date](concatenated)不同的行
所有其他列我不关心返回哪一行。第一,最后,限制1 ......任何事情。它们是各种类型的混合物。
这不能创建新表或删除行,只需选择并加入
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没有数百万行!
非常感谢大家。
更新
我希望这个表看起来像这样:
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 :(得分: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]