我使用的是PL/SQL连接的oracle数据库,语句一开始是
select ry,count(distinct sl) sl,yf,'临时登记','A3' XH from (
SELECT lrr_dm ry,djxh SL,to_char(lrrq,'yyyymm') yf FROM HX_DJ.DJ_NSRXX A WHERE instr(a.ZGSWJ_DM,'1522722')=1 and a.kzztdjlx_dm in ('1131','1500') and to_char(a.lrrq,'yyyymm') ='201808' ) GROUP BY ry,yf
执行结果如图所示,其他的人员编号在2018年8月没有符合a.kzztdjlx_dm in ('1131','1500') 这一个条件,所以count()没有统计数据,但是现在我想让没有数据的人员信息,能够输出一个0.
(我在网上查了下使用左连接语句),可是怎么改要么就标识符无效,要么就输出并没有正确筛选条件,执行结果连to_char(a.lrrq,'yyyymm') ='201808' 这个条件都没有满足。
(SELECT lrr_dm ry,djxh SL,to_char(lrrq,'yyyymm') yf FROM HX_DJ.DJ_NSRXX A) 这个衍生表后面还要加别名,也就是(SELECT lrr_dm ry,djxh SL,to_char(lrrq,'yyyymm') yf FROM HX_DJ.DJ_NSRXX A ) as A
(SELECT lrr_dm ry,djxh SL,to_char(lrrq,'yyyymm') yf FROM HX_DJ.DJ_NSRXX A) 这个衍生表后面还要加别名,也就是(SELECT lrr_dm ry,djxh SL,to_char(lrrq,'yyyymm') yf FROM HX_DJ.DJ_NSRXX A ) as A
(SELECT lrr_dm ry,djxh SL,to_char(lrrq,'yyyymm') yf FROM HX_DJ.DJ_NSRXX A) 这个衍生表后面还要加别名,也就是(SELECT lrr_dm ry,djxh SL,to_char(lrrq,'yyyymm') yf FROM HX_DJ.DJ_NSRXX A ) as A
还有,你第二个衍生表里面怎么没有 djxh
我加上去了。。。是这样吧(我基础比较差,但现在有这个任务,所以是一边查资料一边改的)
(SELECT lrr_dm ry,djxh SL,to_char(lrrq,'yyyymm') yf FROM HX_DJ.DJ_NSRXX A ) as A改成(SELECT lrr_dm ry,djxh SL,to_char(lrrq,'yyyymm') yf FROM HX_DJ.DJ_NSRXX A ) A,再试试
方法:外联接查询
举例:
select A.*,COUNT(B.RegId) from dbo.PR_TrainingClass A
left outer join dbo.PR_PracEducationReg B ON A.ClassId=b.ClassId group by A.[Address],A.AreaCode
create table t
(
id int,
a int,
b int
)
insert into t values(1,101,1);
insert into t values(2,102,1);
insert into t values(3,101,2);
insert into t values(4,102,2);
insert into t
遇到的问题是,在日期从2017.6.15--2017.6.21,有很多个站点,站点中每天不定条数的数据,其中有个空气指数的字段。
需求是要求统计出,这期间的每一天,空气指数超过3级的数据条数。
开始我写的是
select t.createtime_time, <em>count</em>(*)
from airAppraise t
where to_char(t.createtime_time, '
在mysql 下执行如下命令:select use_city,<em>count</em>(*) from data where os="Windows 2003 Std" group by use_city;得到的结果为:
+-----------+----------+
| use_city | <em>count</em>(*) |
+-----------+----------+
| Beijing | 2 |
|
1.未添加时间搜索条件,查询结果如下2. 添加时间添加后,未有<em>符合</em>条件的数据,呈现的结果如下:实际想要的结果 应该是如下情况:直接上代码:SELECT name, SUM (Total) AS total, SUM (Untreated) AS untreated, SUM (Dealing) AS dealing, SUM (Handled) AS handledFROM ( SELECT o...
Sql语句:select b.departmentname, b.name,
<em>count</em>(case when b.businessstate='NOTSUBMIT' then 1 else null end ) NOTSUBMIT,
<em>count</em>(case when b.businessstate='ABANDONED' then 7 else null e
优化场景:以下语句执行用时84s,
select <em>count</em>(*)
from t_zz_support_object t1, T_DC_CI_RS_TOP t3
where t1.status = 1
and t1.ci_rs_id = t3.ci_rs_id
and t1.org_id in (
select org_id from t_dc_
关于使用<em>count</em>(X) 函数的说明
<em>count</em>(X) 函数用于计算一个查询所返回的行数,但是和其他的聚合函数AVG(X), SUM(X), MAX(X), MIN(X)一样,它在统计的时候都会简单的忽略含有空记录的查询。
例如,假设表test的内容如下:
select * from test;
ID NAME COUNTRY
--- -
Oracle数据库中的函数
A :表名, B: 要修改的字段名
update A set B = replace(b, 'null', '0') where id = '5644';
执行效果如下:
decode函数的用法
作用是--<em>显示</em>的时候变了 数据库真实数据不变啊
含义解释:
decode(条件,值1,返回值1,值2,返回值2,...值n,返
select nd.id
<em>count</em>(1)
from tba nd
group by nd.id;
用这种方式查询,得到的结果只<em>显示</em>非0统计。
若想将统计结果为0的数据也<em>显示</em>,可在外再套一层查询,并转换结果:
select tba1.id,nvl(tmptb.cnt,0)
from tba as tba1
left join(select nd.id
1、获取一个月的日期段
处理方式:拼接SQL
set @i = -1;
set @sql = repeat(" select 1 union all",30);
set @sql = left(@sql,length(@sql)-length(" union all"));
set @sql = concat("select DATE_SUB(curdate(),interva...
前言
在操作Oracle数据库表时,我们会常常遇到值为空的时候,我们希望值为空的字段默认为0,在数据库字段求和的时候经常碰见
解决方法
方法1:
NVL(Expr1,Expr2)如果Expr1为NULL,返回Expr2的值,否则返回Expr1的值
例如:
select NVL(SUM(t.score) ,0) from stu t
方法2:(比较原始的‘笨方法’)
--学生表
create table t_student
(
id number,
name varchar2(100),
sex number
)
;
-- Add comments to the columns
comment on column t_student.id
is 'id';
comment on column t_student.name
is '姓
例如如下sql:select <em>count</em>(u.user_id)total,sum(case when u.work_status=0 then 1 else 0 end)Xb,sum(case when u.work_status=1 then 1 else 0 end)Sb,sum(case when u.work_status=2 then 1 else 0 end)Txzdfrom STS_...
<em>oracle</em>在使用sum函数计算式会遇到这样的情况。
如果sum的值为null,则什么都不<em>显示</em>。想要如果为null,则<em>显示</em>为0,怎么办?
方法1:
select when sum(t.money) is null then 0 else sum(t.money) from Money t
方法2:
NVL(Expr1,Expr2)如果Expr1为NU
过多繁琐的sql影响代码质量,及维护成本,以下为两种小技巧处理方式,仅供参考,第二种更美观点
第一种,用case ---when---方法
select id
,sum(case when type in (1,2) then [<em>count</em>] else 0 end) as sum1
,sum(case when type in (3) then [<em>count</em>] else 0 end) as
最近一个项目使用了<em>oracle</em>(11g),在编写sql时,要知道数据总条数,可以这么写:
select id,
v,
<em>count</em>(*) over() as num
from
(
select 1 as id,'a' v from dual
union all
select 2 as id,'b' v from dual
union all
select 3 as