楼主: playmore
3504 4

[问答] 请问能否利用Sql取得Lead或Lag值 [推广有奖]

已卖:1645份资源

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16356 个
通用积分
8.6697
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1332 小时
注册时间
2007-1-11
最后登录
2025-12-1

初级学术勋章 初级热心勋章 中级热心勋章

楼主
playmore 发表于 2012-10-29 11:28:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如下所示的数据集
  1. data have;
  2. input End_Date;
  3. informat End_Date Date9.;
  4. format End_Date Date9.;
  5. datalines;
  6. 1Sep2011
  7. 2Sep2011
  8. 5Sep2011
  9. 6Sep2011
  10. ;
  11. run;
复制代码

想给出一个具体的日期,然后利用Sql找到其前一个或后一个日期。

利用data步的lag函数或者proc expand我会做了,想再问问有没有可以用sql完成的方法,谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:lag值 Lead Lea lag EAD

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

沙发
playmore 发表于 2012-10-29 13:30:47
自己想明白了,示例代码如下:
  1. %let TgtT='4Sep2011'd;

  2. data have;
  3.         input End_Date;
  4.         informat End_Date Date9.;
  5.         format End_Date Date9.;
  6. datalines;
  7. 1Sep2011
  8. 2Sep2011
  9. 5Sep2011
  10. 6Sep2011
  11. ;
  12. run;

  13. proc sql noprint;
  14.         select max(End_Date) into :End_Date_LAG1
  15.                 from have
  16.                 where End_Date<&TgtT;
  17.         select min(End_Date) into :End_Date_LEAD1
  18.                 from have
  19.                 where End_Date>&TgtT;
  20. quit;
  21. dafs
复制代码
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

藤椅
zhentao 发表于 2012-10-30 11:47:15
直接在sql里面进行日期计算不可以吗?

板凳
playmore 发表于 2012-10-30 13:09:16
zhentao 发表于 2012-10-30 11:47
直接在sql里面进行日期计算不可以吗?
这里的日期是交易日,没法直接计算
再说这里只是拿这个数据集举个例子
不一定要日期数据
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

报纸
bobguy 发表于 2012-11-3 10:40:40
The similar functions or operations of LEAD and LAG are very difficulty to implement in SQL. SQL is a database language. There is no importance of ordering in any database. A key is usually the identifier.

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

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