我正在开发一个项目,我必须查询平面Excel电子表格并创建结果,就像它是一个真正的数据库。所有数据都在一个工作表中,它看起来像这样:
Name City State Country Favorites
John Austin TX US Hot Dogs
John Austin TX US Baseball
Steve Orlando FL US Hot Dogs
Steve Orlando FL US Baseball
Steve Orlando FL US Apple Pie
使用查询我需要返回一个看起来像这样的表。
Name City State Country Hot Dogs Baseball Apple Pie
John Austin TX US Yes Yes No
Steve Orlando FL US Yes Yes Yes
关键是我正在使用Excel电子表格执行此操作。
所以我创建了一个如下所示的查询:
Select
[Name],[City],[State],[Country],
IIF([Favorites] = "Hot Dogs", 'Yes') as [Hot Dogs],
IIF([Favorites] = "Baseball", 'Yes') as [Baseball],
IIF([Favorites] = "Apple Pie", 'Yes') as [Apple Pie]
From
[Sheet1$]
Group By
[Name],[City],[State],[Country],
IIF([Favorites] = "Hot Dogs", 'Yes'),
IIF([Favorites] = "Apple Pie", 'Yes')
但是查询的数据结果如下所示:(格式化道歉)
Name City State Country Hot Dogs Baseball Apple Pie
John Austin TX US Yes
John Austin TX US Yes
Steve Orlando FL US Yes
Steve Orlando FL US Yes
Steve Orlando FL US Yes
如何将每个用户的所有结果合并为一行?在Excel中查询时,Group By似乎没有帮助或工作。无论我是否包含Group By部分,结果都是相同的,我被迫包含select语句中的所有列以避免错误:
“您尝试执行不包含指定表达式的查询...作为聚合函数的一部分。
如果这是在SQL DB中我可以使它工作,但我不想在Excel中尝试这样做。
任何建议都会被欣赏!
感谢。
答案 0 :(得分:0)
更改GROUP BY子句,如下所示:
Select
[Name],[City],[State],[Country],
IIF([Favorites] = "Hot Dogs", 'Yes', 'No') as [Hot Dogs],
IIF([Favorites] = "Baseball", 'Yes', 'No') as [Baseball],
IIF([Favorites] = "Apple Pie", 'Yes', 'No') as [Apple Pie]
From
[Sheet1$]
Group By
[Name],[City],[State],[Country]
另外,我认为您需要在IIF语句中添加, 'No'
,就像我做的那样