我正在使用proc import导入文件
proc import datafile="/opt/Export_d.csv" replace
out=work.export_data; run;
然后,我从导出表中选择了2个变量,其中包含一些条件proc SQL;
create table work.login2
as select ' SURVEY_ID'n, TIME format=datetime20.,' USERNAME'n
from work.export_data
having TIME=max(TIME) and ' USE
我试图根据另一列的二进制条件向dataset添加一个新列。然而,我一直在犯错误。我的代码如下:
proc sql;
alter table data
add Status (case WHEN missing(DeactReason) THEN 'Active' ELSE 'Inactive)'
END;
quit;
但是,我得到以下错误:
143 proc sql;
144 alter table data
145 add Status (case WHEN missing(DeactReason) THEN 'Active
这在switch case中是可能的吗?我查看了post ,但它的适应性不强。
step = 'a'
arr = ['a', 'b', 'c']
case step
when arr.include?
puts "var is included in array"
when "other"
puts "nothing"
end
我有一个报表,我试图在report中添加一个参数,但是在报告进入报表SQL时,我需要做什么才能传递所选的参数值,但我遇到了问题,因为参数选择与存储在表中的值不同。
我的意思是:
表中有一个字段,报表查询称为ErrorLevel,它存储数值(1、2、3、4)。但是,这些值中的每个都对应于一个文本字符串。
1是警告;
2是覆盖;
三是限制;
其中4人仍在等待中。
这些文本字符串是实际运行报表时显示的内容。通过使用以下查询,我能够很好地创建一个参数。
参数1号
SET NOCOUNT ON
(Select '' as errorlevel
union
select disti
使用Proc sql中的嵌套case,我需要根据指定的年份和月份获取列的值。例如-如果年份是2018年,月份是12月,那么它应该返回列x201811的值,如果它是null,它应该返回零。我在下面写的代码给出了一个语法错误。请给出一个解决方案。
CASE WHEN (( Year(date) = 2018 ) AND ( Month(date) = 12 )) THEN x201811
WHEN x201811 IS NULL THEN 0
ELSE x201811
WHEN ((Year(date)=2018) AND (Month(Date)=11)) THEN x
我在SQL中有以下脚本:
ALTER PROC [dbo].[getRequests]
@SortBy VARCHAR(50) = 'Date'
AS
SELECT [ReqDate], [RequestorOrg], [RequestCategory],
[ReqDescription], [OrgCountVote]
ORDER BY
CASE WHEN @SortBy = 'Date (oldest first)' THEN [ReqDate] END ASC, [OrgCo
我必须用SQL做一系列的“计数”来找出毒品的使用情况。我对SQL/SAS非常陌生,但我编写了以下简单的(并编写了糟糕的宏):
%macro rxs (title, data, zz);
Title &title &zz;
proc sql;
select count (studyid) as NumberofRxs from &data where zz=&zz;
select count (distinct studyid) as NUMofPATIENTS f
我遇到了一个问题,一些使用PROC的SAS代码无法工作,因为在我的计算中有一个case语句。
代码如下所示:
PROC SQL;
create table example as
select
a.var1,
a.var2,
a.var3,
case when a.NumericVariable is not missing then
Max(0,Sum(Sum(a.Var4), -Sum(a.Var5)))) end as Calculation
from table1 a inner join table2 b
on a.primarykey=b.primarykey
group by va
PROC SQL;
SELECT end_dt-start_dt as EXPOSURE,
(CASE WHEN (EXPOSURE)<0 THEN 0 ELSE CAST(TRUNC((EXPOSURE)/30+0.99) as
INTEGER) END as bucket) FROM TABLE
此语句在SQL中运行良好,但在proc sql中两个“as”处都抛出一个错误。
我有一个带有参数@Region的SQL Server2012查询。有一个WHERE子句,我想根据@Region值设置它的值。下面是我尝试使用的代码 case
when @Region = 'SW'
then Transact.busloc_id in (3, 7, 11)
else Transact.busloc_id in (1, 5, 7)
end
%let list_2=‘a’,’b’,’c’;
PROC SQL;
CREATE TABLE test AS
SELECT
Bin, /*value is a*/
Rank, /*value is 2*/
CASE
WHEN Bin IN (&list_Rank.) /*list_2=‘a’,’b’,’c’*/
THEN 1
ELSE 0
END AS test
FROM Source
;
QUIT;
我正在寻找一种在引用宏变量l
对于下列任务,是否有比下面所述的更优雅的方式:
创建指示变量(在"MAX_X1“和”MAX_X2“下面),如果该观察结果对应于每个观察组中变量的最大值,则将值为1的多个观察组(”key2“以下)中的每个组( "key1")中的值对应于该变量的最大值。
data have;
call streaminit(4321);
do key1=1 to 10;
do key2=1 to 5;
do x1=rand("uniform");
x2=rand("Normal");
output;
end;
end;
end
我试图使用过程创建一个物化视图,但我做错了一些事情。我需要这个,因为我将在服务器上调度作业。例如。我的脚本是:
create or replace procedure proc_teste_delago
is
begin
execute immediate 'create materialized view mv_test01
refresh force on demand
as
select
campo1,
campo2,
(case campo3
when 'aa
嗨,我被困在下面的查询中,我已经为访问和正常工作编写了这个查询。但是当我在SQL 2005中运行它时,它会给我带来错误(不正确的语法靠近关键字'IS')。
我也经历过类似的问题,但我的问题并没有得到解决。
以下是Access查询。
select iif(ISBN IS Null,"1","0") as OK from products
请提供SQL 2005版本。
这可能是一个基本的查询,但我对sql并不熟悉。
提前谢谢。
我搜索它,但我找不到我真正需要的东西。
我应该在一个语句中使用PREPARE、EXECUTE在MySQL中执行多个update查询。
示例查询:
update tableName set column2='a', column3='b' where column1=1;
update tableName set column2='c', column3='d' where column1=2;
update tableName set column2='f', column3='g' where
我有一个存储的proc,它由3个由联合连接的查询组成。这是可行的。它当前的order by值集如下所示:
ORDER BY [CategoryTypeID], [SortOrder], [Name]
我想让它动态化,所以我尝试使用如下的case语句:
ORDER BY CASE WHEN @sort = 0 then [CategoryTypeID] ELSE [SortOrder] end
但是,当我这样做时,sql会报告如果语句包含union...,order by items必须出现在select列表中。等
但是,如果我更改以上内容以避免使用参数:
ORDER BY CA
我有三条密码。我怎样才能把它们组合成一个,使它们看起来优雅呢?data1:使用某种条件拉出数据;data2: data1左转连接新数据;data3:设置为data2并创建一个新变量。
proc sql; create table data1 as select
a.ID,
b.decison_CD,
c.type,
from
dataA a,
dataB b,
dataC c,
where a.ID=b.ID
and a.ID=c.ID
and c.type not in ('Unknown')
and b.decison_CD in (‘Y’,’N’)
我希望将oracle-sql查询保留在python循环中。因此,很少需要在sql查询中放置python变量。下面是我的代码:
import pandas as pd
import cx_Oracle
for i in range(df.shape[0]):
a=df.iloc[i,0]
b=df.iloc[i,1]
c=df.iloc[i,2]
d=df.iloc[i,3]
con = cx_Oracle.connect('xyz', encoding='utf-8')
我想对每一组进行求和,并为每一组的求和创建一个新变量。我尝试过proc sql,但它只创建了一个新变量。我的数据集如下所示: data have;
input firm year product$ value;
datalines;
1 2012 a 5
1 2012 a 6
1 2012 b 3
1 2013 a 4
1 2013 a 3
1 2013 b 4
1 2013 b 3
2 2012 a 5
2 2012 a 6
2 2012 b 3
2 2012 b 4
2 2012 b 2
2 2013 a 4
2 2013 a 5
2 2013 b 3
2 2013 b 3
;
run;
我有一个数据,它的列A包含以下数据
Column A
--------
1
2
?
2
我使用了这个查询:
proc sql;
select
if A= '?' then A=., count(*) as N_obs
from freq_sex_Partner
group by Number_of_sexual_partners;
quit;
这不管用。请建议我如何更换?任何标准值?
我想知道是否有可能在一个单一的情况下执行多个任务。也就是说,与其有两个CASE语句,不如使用一个类似于“然后-do-end”的结构的单个CASE语句。
例如,如何在单个CASE语句中基于thing1和thing2为x分配值?
data example;
input x $;
datalines;
A
A
A
B
B
;
run;
proc sql;
create table make_two_from_one as
select *
, case
when x = 'A' then 'Result1A'
我正在编写一个存储过程来查询数据库。
参数被传递给where子句的过程。
我似乎找不到对SQL IF和CASE语句优缺点的描述。谁能给我一个理由,为什么我应该使用其中一个而不是另一个,或者如果我完全走错了方向?
方法1:
DECLARE @SQL_WHERE_QUERY NVARCHAR(MAX) = '';
IF @SQL_PARAM IS NOT NULL SET @SQL_WHERE_QUERY = @SQL_WHERE_QUERY + ' AND [COLUMN_NAME] = '''+@SQL_PARAM+'''
我的sql查询( Server)出了问题-我有两个表-个人和帐户人员有字段- id,account_id,person_type(can by A,B,C,D帐户有字段- id,account_type(现在为null,can by X或Y)
有2000个账户,但人事表有3500个记录。例如,person表可以用相同的account_id保存3条记录,但这里需要的是不同的person_type :基于person表更新(在一个查询中)帐户表--这一点似乎很简单。如果person类型是A、B、C,则将X放入帐户类型,如果person表包含有B的人,不同的人拥有D和相同的accont_id,我想把
作为第一次使用SAS代码的SQL开发人员,我很难理解我所提供的脚本的一个部分。
请任何人解释一下下面的内容,或者如果可能的话,在SQL中的等价性?
* sum up the total 6 months value for customers with positive value and quantity of items;
proc summary data=value_last6_positive nway missing;
var saleprice quantity;
class Cardid ;
output out = value_last6_
我想在SAS中使用proc SQL计算两个平均值,一个是在某个日期之前的行上,另一个是在某个日期之后。目前,我分两步完成这项工作,然后合并。有没有办法一步到位呢?谢谢。 proc SQL;
create table temp.consensus_forecast_1 as
select distinct gvkey, datadate, avg(meanest) as avg_before from temp.consensus_forecast
where cal_date < fdate
group by gvkey, fdate;
quit;
proc SQL;
我有SAS企业指南8.2,我尝试创建新列(数据类型=日期)。我的代码是:
proc sql;
select
col1
, case when (col2 between '01SEP2019'd and '15SEP2019'd) then '01AUG2020'
when (col2 between '01SEP2019'd and '15SEP2019'd) then '01OCT2020'
end as col3 format = date9.
from my_table;