楼主: azhaoyueb
900 6

[问答] 请教SAS SQL,ON条件里面怎么使用新计算的列。 [推广有奖]

  • 0关注
  • 0粉丝

已卖:2份资源

初中生

28%

还不是VIP/贵宾

-

威望
0
论坛币
238 个
通用积分
0.0323
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
328 点
帖子
7
精华
0
在线时间
25 小时
注册时间
2023-4-21
最后登录
2025-11-18

楼主
azhaoyueb 发表于 2023-5-9 11:41:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
描述一下我的问题。我有两个表:A和B,A包含x列,B包含y列。现将表A和表B按on条件左连接,on条件中多次包含关于x列和y列的表达式f(x,y)。请问,在proc SQL中,如何对该表达式起别名,用于多次调用时不重复去定义该表达式?目的一是想让代码简洁,二是减少重复计算耗费的时间。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:sql proc sql 我的问题 表达式 ROC

沙发
wtst 学生认证  发表于 2023-5-11 09:44:13

藤椅
reduce_fat 发表于 2023-5-15 09:10:37
顶起来!

板凳
azhaoyueb 发表于 2023-5-18 16:28:57
wtst 发表于 2023-5-11 09:44
应该是 calculated
详见https://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer. ...
这个可能不对,因为calculated在SAShelp里面说只能用于where.:
CALCULATED enables you to use the results of an expression in the same SELECT clause                     or in the [url=]WHERE clause[/url]. It is valid only when used to refer to columns that are calculated in the immediate                      [url=]query expression[/url].

对于on是没用的。用SASHELP.class举个例子,以下代码就会报错。
  1. proc sql;
  2. select weight/(height)**2 as bmi
  3.         from sashelp.class as a
  4.         left join sashelp.class(keep=name) as b
  5.         on a.name=b.name and calculated bmi<25;
  6.         quit;
  7.        
复制代码



报纸
jg.sas 发表于 2023-5-29 16:22:30
on连接后用where对数据集进行筛选,可以用a.xxx,b.xxx,或者新生成的变量进行判断
  1. proc sql;select weight/(height)**2 as bmi        from sashelp.class as a        left join sashelp.class(keep=name) as b        on a.name=b.name         where bmi<25;quit;
复制代码


地板
azhaoyueb 发表于 2023-5-30 14:44:14
jg.sas 发表于 2023-5-29 16:22
on连接后用where对数据集进行筛选,可以用a.xxx,b.xxx,或者新生成的变量进行判断
这样是不是只会保留符合where条件的结果。但是left join  on  会保留第一个数据集的所有结果。

7
jg.sas 发表于 2023-6-1 13:17:17
azhaoyueb 发表于 2023-5-30 14:44
这样是不是只会保留符合where条件的结果。但是left join  on  会保留第一个数据集的所有结果。
对的,是连接之后再筛选的结果

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-28 15:42