我对SAS非常陌生,并且很难定义一个全局变量,这个变量可以在我的程序中的许多sql procs中使用。
%LET似乎在我的程序中具有一个非全局范围。我只想声明一个变量一次,而不是有很多%LET语句。我的程序有许多用于不同类型事务监视的SQL procs。例如,目前我有多个proc sqls从相同的表中为各种仪器提取数据,但我想定义一个阈值,其中声明了一个静态值,如下所示:
%let x=10000;
Proc sql;
Select trans_amount, country from transactiontable
where trans_amount > &x
And i
我已经创建了一个SAS表,如
Create table DX.SAS_Table as
select * from connection to oracle
(
select * from my table
)
现在我想将SAS_Table的计数插入到另一个Oracle表中,所以我执行了以下操作
Proc sql;
connect to oracle (connection..!)
execute(
INSERT INTO TEST_SAS_INSERT
select count(*) from SAS_Table
) by oracle;
退出;它向我抛出错误错误: O
我要求SAS引擎在这三个代码示例之间执行的内容有什么不同呢?
样品A
PROC SQL; CREATE TABLE foo AS
SELECT
aaa
FROM
table1
;
CREATE TABLE bar AS
SELECT
aaa
FROM
foo
;
样品B
PROC SQL; CREATE TABLE foo AS
SELECT
aaa
FROM
table1
;
PROC SQL; CREATE TABLE bar AS /* Difference is here */
SELEC
我正在将代码从SAS转换到R,并使用PivotalR包从R运行SQL(POSTGRESQL)语句。
在翻译过程中,我注意到在SAS中,即使某些记录满足PROC语句中where子句中指定的条件,也不会被选中。
PROC SQL;
Create table name as select .....
.........from table1 as t1
where t1.re <=10 and t1.se >= 20;
QUIT;
有些记录会被选中,而有些则不会被选中,特别是当列值等于极限时(在上面的例子中,是re=10和se=20)。
当我从R中运行等价的查询时,我没有遇到这个问题。对
我是SAS和SQL的新手。我有一个任务,创建类似的专栏,但有不同的数字。
例如:| DATE | NAME | A1 | A2 | A3 | B |
所以我在SAS中写了这样的代码
PROC SQL;
CREATE TABLE TEST AS
SELECT DATE, NAME,
DO i = 1 to 3
0 AS A&i.,
END
1 as B
FROM SOURCE;
QUIT;
当我运行时,我得到了这个错误
Syntax error, expecting one
下午好
通过使用Proc SQL,我正在寻找SAS上的listagg函数。
例如
id product_name
1001 Bananas
1002 Bananas
1002 Apples
1002 Peach
1003 Pears
proc sql;
create table work.test2 as
select id, _____(',', product_name)
from test1
group by id
order by 1;
quit;
结果
id
我是SAS的新手,我正在尝试修改这段代码
proc sql;
select a, Current_Date - 2 - b as some_date
from table
Current_Date是sas中的一个函数。我正试着用我自己的约会对象代替它。A和b是我连接到的数据库中的列名。我试着把Current_Date改成2013年11月12日,但它似乎不起作用。
我试过:
1.
%let startFrom = '12nov2013'd;
proc sql;
select a, &startFrom - 2 - b as some_date
from table
这
我是SAS的新手,在使用MODIFY语句(不使用proc sql)向SAS中的现有数据集添加列时遇到一些问题。
假设我有这样的数据
id name salary perks
1 John 2000 50
2 Mary 3000 120
我需要的是一个新的列,其中包含工资和津贴的总和。我试着这样做
data data1;
modify data1;
money=salary+perks;
run;
但显然它不起作用。如果有任何帮助,我将不胜感激!
我有一个表,t1,有4列:
key, cd, date, result_num
在SAS中,我们有以下代码:
PROC SQL;
create table t2 AS
select * from t1
group by key
having date = MAX(date)
order by key, cd;
RUN;
我的印象是,在使用聚合函数时所选择的所有列(如MAX )都必须在组中,或将聚合函数应用于它们。我的目标是将这个SAS代码转换为SQL,有什么方法可以在SQL (更具体地说是hiveQL)中做到这一点?
我有一些SAS脚本,从编辑器窗口运行非常好。但是,当我将它用作批处理文件时,它有时运行,有时不运行。失败的部分是:
1) libname ... /* I am connecting to a database
2) proc sql ( dsn= ... /* also connecting to a database
我如何编写这样的代码,如果libname和proc sql无法建立连接,那么try again。。。就像一个循环什么的
对于libname和proc sql,有什么选项可以延长超时值“there”?
请帮帮我
我的系统上安装了SAS EG 7.1版和Office 2013。我正在尝试通过从VBA调用SAS项目来运行它们。作为第一步,我尝试使用我在网上找到的以下代码调用一个简单的PROC步骤:
Sub createTable()
Dim obObjectFactory As New SASObjectManager.ObjectFactory
Dim obObjectKeeper As New SASObjectManager.ObjectKeeper
Dim obServer As New SASObjectManager.ServerDef
Dim obSAS
当我在SAS中使用PROC SQL (在UNIX上使用SAS9.3通过SAS EG )时,我需要添加几个变量,但其中一些变量丢失了,因此导致了总数的丢失。例如:
PROC SQL;
CREATE TABLE my_table AS
SELECT
A,
B,
C,
(A+B+C) as D
FROM source_table
在这个例子中,如果A、B或C都丢失了,那么D也会丢失。我需要类似于数据步骤中的sum语句的东西,其中忽略了任何缺失的值。例如,如果C缺失,则D应该等于A和B。
数据步骤不是一个选项。我必须呆在PROC SQL中。
你好,Vasilij
我有一个包含许多字段的数据集。我试图总结按年平均值计算的“价格”数据。例如:
1900年至1925年:“平均价格”
1925年至1950年:“平均价格”
1950至1975年:“平均价格”
1975至2000年:“平均价格”
2000年至2017年:“平均价格”
试过:
proc sql;
select avg(price) as avg_price
FROM summary
WHEN year between 1995 and 2000;
quit;
以上代码不起作用。你能帮我处理代码吗(请添加到proc并退出或者其他我需要的东西,我是SAS/SQL新手)
我在中工作,并有一个包含唯一标识符(id_list)的列SAS表。
我想过滤另一个SAS表,以只包含可以在id_list中找到的观察。
到目前为止我的代码是:
proc sql noprint;
CREATE TABLE test AS
SELECT *
FROM data_sample
WHERE id IN id_list
quit;
这段代码给出了以下错误:
Error 22-322: Syntax error, expecting on of the following: (, SELECT.
我做错了什么?
谢谢你的帮忙。