语法"计算"在Proc SQL中,您可以使用在前面步骤中创建的变量的别名。
例如:
Select *
id,
sum(amount) as sum
from dataset
group by id
order by calculated sum;
SQL中是否存在允许相同结果的等效语法?
谢谢!
答案 0 :(得分:2)
您实际上可以在order by
子句中使用列别名(至少在大多数数据库中)。所以你可以这样做:
Select id, sum(amount) as thesum
from dataset
group by id
order by thesum;
(请注意,sum
可能是某些数据库中的保留字,因此我使用了其他别名。)
你更大的问题是"重新出现" SAS之所以这样做,是因为您已包含非聚合列。在大多数数据库中,您可以写:
Select d.*, sum(d.amount) over (partition by id) as thesum
from dataset d
group by id
order by thesum;
答案 1 :(得分:1)
如果您的问题与ANSI SQL有关,答案是:
没有"计算"这样的事情。
因此,您必须计算要使用的列,然后在第二个SQL语句中使用它 SAS SQL中的方法只是一个方便的快捷方式,它不符合ANSI SQL。
答案 2 :(得分:0)
计算出的是SAS“ enhancement ”
您可以使用数字按项目在select语句中出现的顺序进行引用。
Select
id,
sum(amount) as sum
from dataset
group by 1
order by 2;