Sql server 如何修复错误:关键字';对于';

Sql server 如何修复错误:关键字';对于';,sql-server,tsql,pivot,Sql Server,Tsql,Pivot,我是PIVOT函数的新手,到目前为止,我无法在数据透视表时成功运行任何查询 以下是数据源: 区域国家 非洲180 南极洲3 亚洲99 欧洲154 中东54 北美123 大洋洲87 南美洲48 我需要每个区域成为一列——只有一行包含该区域的国家数 兼容性级别:SQL Server 2019(150) 我尝试了在网上找到的所有建议,但仍然无法理解我做错了什么 SELECT [Africa], [Asia], [Middle East], [North America], [Ocea

我是PIVOT函数的新手,到目前为止,我无法在数据透视表时成功运行任何查询

以下是数据源:

区域国家
非洲180
南极洲3
亚洲99
欧洲154
中东54
北美123
大洋洲87
南美洲48
我需要每个区域成为一列——只有一行包含该区域的国家数

兼容性级别:SQL Server 2019(150)

我尝试了在网上找到的所有建议,但仍然无法理解我做错了什么

SELECT [Africa], [Asia], [Middle East], [North America], 
       [Oceania], [South America], [Antarctica]
FROM (
  SELECT region, count(name) as countries
  FROM dbo.country
  Group by region
) AS pDataSource
PIVOT
(
 countries
    FOR region IN ([Africa], [Asia], [Middle East], [North America], 
    [Oceania], [South America], [Antarctica])
) AS pPivotTable
味精156,第15级,状态1,第10行
关键字“FOR”附近的语法不正确


为什么不直接使用条件聚合呢

SELECT SUM(CASE WHEN region = 'Africa' THEN 1 ELSE 0 END) as Africa,
       SUM(CASE WHEN region = 'Asia' THEN 1 ELSE 0 END) as Asia,
       . . .   -- continue for the rest of the continents
FROM dbo.country;

您缺少汇总通知
sum(countries)


谢谢,戈登,这很有效。但是,我正在尝试学习使用PIVOT函数,不明白查询有什么问题。。。我的目标最终将是按大洲列出所有国家——你认为有什么解决办法吗?
...
PIVOT
(
 sum(countries) 
    FOR region IN ([Africa], [Asia], [Middle East], [North America], 
    [Oceania], [South America], [Antarctica])
) AS pPivotTable