楼主: Tigflanker
5090 2

[问答] 请问SQL中有无类似symget函数 [推广有奖]

  • 8关注
  • 18粉丝

副教授

49%

还不是VIP/贵宾

-

威望
0
论坛币
2321 个
通用积分
9.9128
学术水平
179 点
热心指数
194 点
信用等级
167 点
经验
27443 点
帖子
622
精华
0
在线时间
851 小时
注册时间
2011-3-27
最后登录
2023-5-14

楼主
Tigflanker 发表于 2014-4-10 18:32:53 |AI写论文
20论坛币
想问一下,SQL中是否有类似data步中的symget函数?

我想做的事情类似于:

symget('TRT'||put(TRTAN, best.)) - count as missing

这样。

另外,请问如何能得知SQL中都有哪些data步中可用的函数?例如ifc,例如propcase 这般。。

谢谢。

最佳答案

yongyitian 查看完整内容

symget语句的作用是将symput语句在同一个数据步生成的宏变量的值取出,赋给另一个变量。 proc sql;可以有多个select从句,后面的select从句可以调用前面从句生成的宏变量。 貌似不可以调用在同一个select从句中生成的宏变量。 %symdel one_name; %put one_name=&one_name; proc sql; select name into : one_name from sashelp.class where name like 'Lou%'; select * from sashelp.class ...
关键词:Get sql missing data步 Count count 如何
Bye SAS.
若有缘,能重聚。

沙发
yongyitian 发表于 2014-4-10 18:32:54
symget语句的作用是将symput语句在同一个数据步生成的宏变量的值取出,赋给另一个变量。

proc sql;可以有多个select从句,后面的select从句可以调用前面从句生成的宏变量。
貌似不可以调用在同一个select从句中生成的宏变量。

%symdel one_name;
%put one_name=&one_name;
proc sql;
     select name into : one_name
     from sashelp.class
     where name like 'Lou%';
     select * from sashelp.class
     where name = "&one_name";
quit;

proc sql 的条件语句是 where,case when,join ... on,没有 ifc.  
多数的数据步的字符函数可以在proc sql 中使用。 For example:
proc sql;
   select lowcase(name) as Newname,  propcase(substr(name, 2,1)) as Second_Initial
   from class;
quit;

藤椅
Tigflanker 发表于 2014-4-11 09:22:00
yongyitian 发表于 2014-4-10 18:32
symget语句的作用是将symput语句在同一个数据步生成的宏变量的值取出,赋给另一个变量。

proc sql;可以 ...
感谢您的回答。

select有这个用法:ifc(value > 0, 'Y', 'N') as result

我想说的是,我的SQL中有例如两个宏变量叫做TRT1和TRT2,
然后我想在SQL中根据数据集本身TRT变量的值来选择对于某条观测,他到底是调用TRT1还是调用TRT2

那只好在data步中实现了,谢谢啊~
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
yongyitian + 1 + 1 + 1 分析的有道理

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

Bye SAS.
若有缘,能重聚。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 23:06