Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SAS SQL根据日期字段的值选择用于计算的变量(名称中包含年份)_Sql_Db2_Sas - Fatal编程技术网

如何使用SAS SQL根据日期字段的值选择用于计算的变量(名称中包含年份)

如何使用SAS SQL根据日期字段的值选择用于计算的变量(名称中包含年份),sql,db2,sas,Sql,Db2,Sas,使用SAS SQL(或仅SAS)时,我需要使用一个变量,根据不同日期字段的年份部分进行计算。变量的名称包含我需要与另一个日期变量的年份部分匹配的年份。如何选择用于计算的正确变量 例如,我需要选择使用以下哪一项: GRADE_2013 GRADE_2014 GRADE_2015 通过查看格式为2014年1月15日的日期字段,从2014年开始,我想从2014年的GRADE_2014中获取值,用于另一个计算。您有几个选项,一个是带有年份索引的数组,另一个是查找变量值的VVALUEX函数 Data

使用SAS SQL(或仅SAS)时,我需要使用一个变量,根据不同日期字段的年份部分进行计算。变量的名称包含我需要与另一个日期变量的年份部分匹配的年份。如何选择用于计算的正确变量

例如,我需要选择使用以下哪一项:

GRADE_2013
GRADE_2014
GRADE_2015 

通过查看格式为2014年1月15日的日期字段,从2014年开始,我想从2014年的
GRADE_2014
中获取值,用于另一个计算。

您有几个选项,一个是带有年份索引的数组,另一个是查找变量值的VVALUEX函数

Data One;
set Have;
array grades(2013:2015) grade_2013-grade_2015;

*Array method;
variable_want1 = grades(year(date_field));

*VValueX method;
variable_want2 = vvalues('grades_'||put(year(date_field), 4.));
run;

通常,如果可以将数据转换为更规范化的格式,这类问题就会变得容易得多


因此,不要让三个grade_YYYY变量在每个变量上都有年份后缀,而是将每个记录转换为三个记录,变量为year和grade

非常感谢您提供了非常好的答案……我是一个新手,所以我至少要开始使用非数组方法。

好吧,是的,但她使用SAS这一事实意味着一个报告数据库,其中的数据通常会因性能原因被选择性地非规范化。@Clockwork Muse当SAS程序员收到非规范化数据时,通常,他们最好的出发点是考虑通过使用SAS来正常化(在某种程度上)可以获得的收益。使用规范化数据时,SAS编码通常要简单得多。没有理由受源数据结构的约束。