0

我正在做一个项目,我必须查询一个平面 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 中尝试这样做。

任何建议将不胜感激!

谢谢。

4

1 回答 1

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]

另外,我认为您需要, 'No'像我一样添加您的 IIF 语句

于 2013-09-12T04:20:52.577 回答