IBM大型机论坛索引
 
 登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答  寄存器
 

SAS日期集选项-WHERE子句与BETWEEN一起使用


IBM大型机论坛 -> 所有其他大型机主题
 发表新话题     回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
瓦桑斯

全球主持人


已加入:2007年8月28日
帖子:1689
地点:印度蒂鲁普布尔

 发布 发表:2012年11月23日,星期五
引用回复

你好
我想知道如何将WHERE子句数据集选项与between运算符一起使用。您能否更正以下数据集选项,以便程序仅选择10月2日至10月5日之间的记录。

我尝试了以下程序。
码:
数据思考;                                        
INPUT DATE1 DATETIME。                           
牌;                                            
01OCT12 :00:00                                     
02OCT12 :00:00                                     
03OCT12 :00:00                                     
04OCT12 :00:00                                     
05OCT12 :00:00                                     
06OCT12 :00:00                                     
;                                                 
跑;                                              
PROC打印数据=思考(WHERE = (DATE1           
之间('02OCT12:00:00'DT  AND  '05OCT12:00:00'DT)));
跑;    


但这会导致错误
码:
错误22-322: Missing ')数据集选项列表的括号


提前致谢,
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

 发布 发表:2012年11月23日,星期五,下午6:14
引用回复

应该是
码:

PROC打印数据=思考(WHERE DATE1= (DATE1           
之间('02OCT12:00:00'DT  AND  '05OCT12:00:00'DT)));
跑;    


????
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

 发布 发表:2012年11月23日,星期五6:33 pm
引用回复

对不起我上次错了

你可以试试这个吗

码:
PROC打印数据=思考;
日期DATE1            
'02OCT12之间:00:00'DT  AND  '05OCT12:00:00'DT;
跑;
回到顶部
查看用户资料 发送私信
瓦桑斯

全球主持人


已加入:2007年8月28日
帖子:1689
地点:印度蒂鲁普布尔

 发布 发表:2012年11月23日,星期五6:35 pm
引用回复

嗨,潘朵拉,
WHERE选项要求在关键字后紧接=。

码:
13   PROC打印数据=思考(WHERE DATE1= (DATE1
                             ----- -----       
                             12    12           
                                   22           
错误12-63:选项WHERE缺少'='。     
错误22-7:无效的选项名称DATE1。         
回到顶部
查看用户资料 发送私信
瓦桑斯

全球主持人


已加入:2007年8月28日
帖子:1689
地点:印度蒂鲁普布尔

 发布 发表:2012年11月23日,星期五6:41 pm
引用回复

嗨,潘朵拉,
感谢您的建议。它工作正常。
但要求是使用数据集选项而不是单独的where语句来执行此操作。

原因是数据集选项适用于单个数据集,而不适用于数据步骤或proc步骤下的所有数据集。

谢谢& 问候,
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

 发布 发表:2012年11月23日,星期五6:41 pm
引用回复

不,我不这么认为 这里
回到顶部
查看用户资料 发送私信
瓦桑斯

全球主持人


已加入:2007年8月28日
帖子:1689
地点:印度蒂鲁普布尔

 发布 发表:2012年11月23日,星期五,下午6:50
引用回复

嗨,潘朵拉,
感谢您的意见。
与where数据集选项相比,where语句有一个缺点。
那就是导致这个话题的原因


码:
数据一;  
输入VAR;
牌;      
1         
2         
3         
4         
5         
;         
跑;        
数据二;  
输入VAR;
牌;      
10         
20         
30         
40         
50         
;         
跑;        
数据输出                                  
设置一(WHERE=(VAR > 2)) TWO(WHERE=(VAR >20));
跑;                                          
PROC PRINT DATA = OUTPUT;跑;               


引用:
原因是数据集选项适用于单个数据集,而不适用于数据步骤或proc步骤下的所有数据集。


希望这可以澄清事情。
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

 发布 发表:2012年11月23日,星期五,下午6:55
引用回复

是的Vasanth  icon_smile.gif

很高兴它有效...

自2010年以来我从未使用过SAS  icon_sad.gif ...希望我将来能做些..
回到顶部
查看用户资料 发送私信
瓦桑斯

全球主持人


已加入:2007年8月28日
帖子:1689
地点:印度蒂鲁普布尔

 发布 发表:2012年11月23日,星期五7:15 pm
引用回复

啊..
2年就可以了。 SAS几乎仍然是相同的“乐趣”。
回到顶部
查看用户资料 发送私信
罗伯特·桑普

全球主持人


已加入:2008年6月6日
帖子:8569
地点:美国爱荷华州迪比克

 发布 发表:星期五十一月23,2012 7:28下午
引用回复

Vasanth,我在SAS网站上发现了这一点:
引用:
句法
WHERE =(where-expression-1<逻辑运算符where-expression-n>)


语法说明

在哪里表达

是由一系列运算符,操作数和SAS函数组成的算术或逻辑表达式。操作数是变量,SAS函数或常量。运算符是要求比较,逻辑运算或算术运算的符号。表达式必须用括号括起来。
逻辑运算符

可以是AND,AND NOT,OR或OR NOT。
support.sas.com/documentation/cdl/zh-CN/lrdict/64316/HTML/default/viewer.htm#a000131192.htm 因此,我怀疑如果将子句更改为使用GE和LE,则可以使其正常运行,但不能与BETWEEN一起使用。
回到顶部
查看用户资料 发送私信
瓦桑斯

全球主持人


已加入:2007年8月28日
帖子:1689
地点:印度蒂鲁普布尔

 发布 发表:2012年11月26日星期一8:57 pm
引用回复

你好罗伯特,
感谢您的投入。 IN运算符正在运行,因此假设其他选项(例如BETWEEN)也可能起作用。

无论如何,将其与您的GE和LE想法一起整理。

问候,
回到顶部
查看用户资料 发送私信
罗伯特·桑普

全球主持人


已加入:2008年6月6日
帖子:8569
地点:美国爱荷华州迪比克

 发布 发表:2012年11月26日星期一9:17 pm
引用回复

高兴地听到您正在使用它!
回到顶部
查看用户资料 发送私信
瓦桑斯

全球主持人


已加入:2007年8月28日
帖子:1689
地点:印度蒂鲁普布尔

 发布 发表:2012年11月27日,星期二,上午9:21
引用回复

更新:
使用“ between”运算符获取where数据集选项:-)
码:
数据思考;                                        
INPUT DATE1 DATETIME。                           
牌;                                            
01OCT12 :00:00                                     
02OCT12 :00:00                                     
03OCT12 :00:00                                     
04OCT12 :00:00                                     
05OCT12 :00:00                                     
06OCT12 :00:00                                     
;                                                 
跑;                                              
PROC打印数据=思考(WHERE = ('02OCT12之间的DATE1:00:00'DT  AND  '04OCT12:00:00'DT));
FORMAT date1 datetime。
跑;  

问候,
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
 发表新话题     回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> 所有其他大型机主题

 


类似主题
话题 论坛 回覆
 没有新帖 HDAM中的RMNAME选项 IMS数据库/ DC 4
 没有新帖 DB2组成员用法 DB2 0
 没有新帖 COBOL pgm中的NOT IN子句 COBOL程式设计 8
 没有新帖 对游标的使用有任何限制吗? DB2 1
 没有新帖 带有图片条款的SUSBSCRIPT COBOL程式设计 3
搜索我们的论坛:


 回到顶部