Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询Excel电子表格并将多行数据合并为一行_Sql_Excel - Fatal编程技术网

SQL查询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

我正在从事一个项目,在这个项目中,我必须查询一个扁平的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')
对于查询,我需要返回一个如下所示的表

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]
我非常非常感谢大家的帮助!