在SQL中,Proc Sql(在Sas中)“Calculated”命令的等价物是什么?

时间:2014-07-21 19:44:08

标签: sql sas

语法"计算"在Proc SQL中,您可以使用在前面步骤中创建的变量的别名。

例如:

Select *
id,
sum(amount) as sum
from dataset
group by id
order by calculated sum;

SQL中是否存在允许相同结果的等效语法?

谢谢!

3 个答案:

答案 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;