You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SAS的PROC SQL中按Name分组报错,如何实现分组求和?

解决PROC SQL中GROUP BY NAME列报错的问题

嘿,这个报错其实很好理解——NAME是SAS的保留关键字,当你直接写GROUP BY name的时候,SAS会误以为你在调用这个关键字,而不是引用你数据集里的Name列,所以才会抛出这个错误。

给你几个简单的解决办法,随便选一个都能搞定:

方法1:用表别名明确指定列所属的表

给数据集p1起一个别名,通过别名来引用列,这样SAS就不会把name当成关键字了:

PROC SQL;
SELECT t.name, SUM(t.order_value) AS Total_Spent
FROM p1 AS t
GROUP BY t.name;
QUIT;

方法2:给列起非保留字别名,再GROUP BY别名

在SELECT里给name列换个非关键字的名字,比如Customer_Name,然后GROUP BY这个新别名,避开关键字冲突:

PROC SQL;
SELECT name AS Customer_Name, SUM(order_value) AS Total_Spent
FROM p1
GROUP BY Customer_Name;
QUIT;

方法3:用带n后缀的双引号包裹保留字列名

SAS中可以用"列名"n的格式来引用作为保留字的列名,明确告诉SAS这是一个数据列:

PROC SQL;
SELECT "Name"n, SUM("Order_Value"n) AS Total_Spent
FROM p1
GROUP BY "Name"n;
QUIT;

这三种方法都能让你得到想要的结果:

Name Total_Spent
John 23
Mark 12

内容的提问来源于stack exchange,提问作者Tester_Y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:35:30