oracle 让count()能显示0,当没有符合的项时,正确显示0

xkalzjh 2018-09-12 10:42:04
我使用的是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' 这个条件都没有满足。
...全文
3027 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
RINK_1 2018-09-12
  • 打赏
  • 举报
回复
引用 5 楼 xkalzjh 的回复:
[quote=引用 2 楼 RINK_1 的回复:] 你左关联是怎么写的,是 用户表 LEFT JOIN DJ_NSRXX 这样吗
是的,用的left join 这样子,我找个图 (这个临时登记少了一个单引号,我已经加上去了,也是一样的错误)[/quote] (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
zbdzjx 2018-09-12
  • 打赏
  • 举报
回复
left join (......) B这段中的括号里面的a.全部去掉。
xkalzjh 2018-09-12
  • 打赏
  • 举报
回复
引用 2 楼 RINK_1 的回复:
你左关联是怎么写的,是 用户表 LEFT JOIN DJ_NSRXX 这样吗
是的,用的left join 这样子,我找个图
(这个临时登记少了一个单引号,我已经加上去了,也是一样的错误)
xkalzjh 2018-09-12
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
把a.kzztdjlx_dm in ('1131','1500') 这个条件去掉?
不行,必须要筛选这个选项。。。。
xkalzjh 2018-09-12
  • 打赏
  • 举报
回复
是的,用的left join 这样子,我找个图
(这个临时登记少了一个单引号,我已经加上去了,也是一样的错误)
RINK_1 2018-09-12
  • 打赏
  • 举报
回复
你左关联是怎么写的,是 用户表 LEFT JOIN DJ_NSRXX 这样吗
二月十六 2018-09-12
  • 打赏
  • 举报
回复
把a.kzztdjlx_dm in ('1131','1500') 这个条件去掉?
RINK_1 2018-09-12
  • 打赏
  • 举报
回复
引用 8 楼 xkalzjh 的回复:
[quote=引用 7 楼 RINK_1 的回复:] [quote=引用 5 楼 xkalzjh 的回复:] [quote=引用 2 楼 RINK_1 的回复:] 你左关联是怎么写的,是 用户表 LEFT JOIN DJ_NSRXX 这样吗
是的,用的left join 这样子,我找个图 (这个临时登记少了一个单引号,我已经加上去了,也是一样的错误)[/quote] (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[/quote] 我加上去了。。。是这样吧(我基础比较差,但现在有这个任务,所以是一边查资料一边改的)[/quote] (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,再试试 ORACLE不支持用AS来赋予表别名
xkalzjh 2018-09-12
  • 打赏
  • 举报
回复
引用 7 楼 RINK_1 的回复:
[quote=引用 5 楼 xkalzjh 的回复:]
[quote=引用 2 楼 RINK_1 的回复:]
你左关联是怎么写的,是 用户表 LEFT JOIN DJ_NSRXX 这样吗
是的,用的left join 这样子,我找个图
(这个临时登记少了一个单引号,我已经加上去了,也是一样的错误)[/quote]

(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[/quote]
我加上去了。。。是这样吧(我基础比较差,但现在有这个任务,所以是一边查资料一边改的)

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧