我有一个 PROC SQL 专家的问题。我有这个代码:
proc sql;
create table FinalData as
select *
,Sum(starting_year,year_diff) as colsum
,Price*(1+(SELECT Return from OtherData where Year=calculated colsum)) as PriceFinal
from MainData;
quit;
显然calculated
关键字不起作用,我认为变量必须在同一个选择上。我希望能够colsum
在一个 sql 语句中计算和使用子查询。我想避免colsum
在每个子查询中重新计算,因为最终我将使用更复杂的函数,如果每次重新计算,这些函数可能会减慢代码的速度。
我发现这个问题似乎几乎相同,但我没有设法使代码与该答案一起工作。
编辑:稍微更改了代码。
它实际上是Year=calculated colsum
。OtherData 基本上是一个参考表,其中Year
没有重复项。这是一个例子:
MainData OtherData
[Price] [starting_year] [year_diff] [Return] [Year]
5.00 2010 5 0.04 2015
2.33 2013 3 0.02 2016
4.51 2011 1 0.005 2017
0.1 2018
会有缺失值,这很好。我知道这可以通过多个 proc sql 语句轻松完成,但挑战在于在单个语句中完成。SUM
可以是生成要在 OtherData 中查找的输出的任何其他函数。
有没有办法做到这一点 ?