当前位置:首页 » 编程语言 » procsqldistinct
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

procsqldistinct

发布时间: 2023-01-24 06:45:01

‘壹’ sas 中的sql语句 下面语句中的comflag什么意思啊 怎么用啊 谢谢哈

晕, 这个是建表语句,但是是借助select 的
具体select 里面的表结构,是什么意思,只有建表的人才知道,是业务知识,和数据库无关,不是系统库里面的

‘贰’ 非常难的sql查询计数语句

select count(*) from(
select distinct 时间字段,ip字段 from 表名 where 时间字段 between 时间1 and 时间2 group by 时间字段,ip字段 having count(*) =1);

---
以上,希望对你有所帮助。

‘叁’ sql存储过程从一张表中查询到的值作为另一张表的新的字段

如果两表字段相同,则可以直接这样用。
insert into table_a select * from table_b
如果两表字段不同,a表需要b中的某几个字段即可,则可以如下使用:
insert into table_a(field_a1,field_a2,field_a3) select field_b1,field_b2,field_b3 from table_b
还可以加上where条件

‘肆’ 创建宏变量方法

方法1:通过宏函数创建宏变量
%let dsid=%sysfunc(open(sashelp.class));
%let nvars=%sysfunc(attrn(&dsid,nvars));
%let nobs=%sysfunc(attrn(&dsid,nobs));
%let dsid=%sysfunc(close(&dsid));
%put &nvars.;
%put &nobs.;

方法2:通过SQL过程用变量值创建一个宏变量
proc sql noprint;
select distinct sex
into : list_a separated by ' '
from sashelp.class;
quit;
%put &list_a.;

方法3:通过SQL过程用变量值创建多个宏变量
proc sql noprint;
select nvar, nobs
into dictionary.tables
where libname='SASHELP' and memname='CLASS'
/ 注意SASHELP'和CLASS要大写 /
quit;
%put &nvar.;
%put &nobs.;

方法4:通过CONTENTS和SQL过程用变量名创建宏变量
proc contents data=sashelp.class out=con_class;
run;
proc sql noprint;
select name,put(count(name),5,-1)
into :clist separated by ' ',:charct
from con_class
where type=2;
quit;
%put &clist.;
%put &charct.;

方法5:通过SQL过程用变量名创建宏变量列表
proc sql noprint;
select name
into :clist1-:clist999
from dictionary.columns
where libname='SASHELP' and memname='CLASS'
quit;
%put &clist1.;
%put &clist2.;

方法6:通过SQL过程用变量值创建宏变量列表
proc sql noprint;
select count(distinct sex)
into :n
from sashelp.class;
select distinct sex
into :type1 - :type%left(&n)
from sashelp.class;
quit;
%put &n.;
%put &type1.;

方法7:通过DATA步接口子程序CALL SYMPUTX
data null ;
set sashelp.class nobs=obs;
call symputx('m1',obs);
call symput('m2',obs);
stop;
run;
%put &m1.;
%put &m2.;

‘伍’ SQL 问题 不同数据库表中字段的比对

查数据字典
select T.COLUMN_NAME
from ALL_TAB_COLUMNS T
where T.TABLE_NAME = 'A表'
minus
select T.COLUMN_NAME
from ALL_TAB_COLUMNS T
where T.TABLE_NAME = 'B表'
这样就找到了DBF_1比DBF_2多出来的列

要抽数据就直接写:
select 查到的几列 from DBF_1就行了

我给你的sql贴上去跑就行了啊,怎么还不清楚么?

‘陆’ sql数据库--存储过程增删改查四个语句

  1. SQL SELECT DISTINCT 语句:在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

    关键词 DISTINCT 用于返回唯一不同的值。

  2. INSERT INTO 语句:INSERT INTO 语句用于向表格中插入新的行。

  3. Update 语句:Update 语句用于修改表中的数据。

  4. DELETE 语句:DELETE 语句用于删除表中的行。

‘柒’ sql 调用已经建立的存储过程

实现的方法和详细的操作步骤如下:

1、第一步,创建一个存储过程,该代码如图所示。存储过程的主要目的是为表“JingYan”插入新数据,如下图所示,然后进入下一步。

‘捌’ sql 存储过程报错。我想把它写成一个模糊搜索的存储过程。

declare @sql varchar(200),
SET @SQL='select distinct EmployeeName, EmployeeNo, MobileNo, Email
from tbOUEmployee, tbOUOrganization
where (EmployeeName like '%' '+@Keyword+''%'or EmployeeNo '%'+,@Keyword+'%') and (tbOUEmployee.OUID = @OUID and tbOUEmployee.OUID = tbOUOrganization.OUID) '
exec @sql
带变量的只能用扩展SQL

‘玖’ 求助proc sql distinct的问题

I believe you cannot do it with distinct, but you may bypass it as in the example below,

data t1;
do i=1 to 20;
a=ceil(ranuni(127)*5);
output;
end;
keep a;
run;
proc print;run;
proc sql;
create table t2 as
select a as b, min(N) as ord
from (
select a , monotonic() as N
from t1
)
group by 1
order by 2
;
quit;
proc print;run;