SQL查询Excel电子表格并将多行数据合并为一行
我正在从事一个项目,在这个项目中,我必须查询一个扁平的Excel电子表格,并像创建一个真实的数据库一样创建结果。所有数据都在一个工作表中,看起来像这样:SQL查询Excel电子表格并将多行数据合并为一行,sql,excel,Sql,Excel,我正在从事一个项目,在这个项目中,我必须查询一个扁平的Excel电子表格,并像创建一个真实的数据库一样创建结果。所有数据都在一个工作表中,看起来像这样: Name City State Country Favorites John Austin TX US Hot Dogs John Austin TX US Baseball Steve Orlando F
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
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 Yes No
Steve Orlando FL US Yes Yes Yes
关键是我用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
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')
但是,查询的数据结果如下所示:(对格式设置表示歉意)
如何将每个用户的所有结果合并到一行中?在Excel中查询时,“分组依据”似乎不起作用。无论是否包含Group By section,结果都是相同的,并且为了避免错误,我被迫包含select语句中的所有列:
“您试图执行的查询不包括指定的表达式…作为聚合函数的一部分
如果这是在SQL数据库中,我可以让它工作,但我一直在尝试在Excel中这样做
如有任何建议,将不胜感激
谢谢。更改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”
,就像我在这里暗中拍摄的那样,但是联合查询在Excel中工作吗?同样,如果这是从一个Excel工作表到另一个Excel工作表,为什么还要求助于SQL呢?一个结合了动态范围的宏会产生奇迹。不确定(无法测试),但可能Max(IIF([收藏夹]=”热狗“,‘是’)作为[热狗]
etc可能完成这项工作。通常,不在Group By子句中的列需要应用某种聚合函数。您必须明确使用JOIN
。感谢Brian、Tim、Cha。以下是我所做的,它工作得很好:选择[Name]、[City]、[State]、[Country]、Max(IIF([Favorites]=“hotdoges”、'Yes'、'No')作为[hotdoges]、Max(IIF([Favorites]=“hotdoges”、'Yes'、'No')、Max(IIF([Favorites]=“Apple Pie”、'Yes'、'No'))作为[Sheet1$]组中的[Apple Pie]、[Name]、[City]、[State]、[State]、[Country]
我非常非常感谢大家的帮助!