欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle中的SUM用法讲解

程序员文章站 2023-12-13 20:16:28
oracle中的sum条件查询 1、按照区域编码分组查询区域编码、iptv_nbr不为空的数量、acc_nbr不为空的数量、所有用户数量 select are...

oracle中的sum条件查询

1、按照区域编码分组查询区域编码、iptv_nbr不为空的数量、acc_nbr不为空的数量、所有用户数量

select
area_code,
sum (
case
when iptv_nbr is null or iptv_nbr = '' then
0
else
1
end
),
sum (
case
when acc_nbr is null or acc_nbr = '' then
0
else
1
end
),
count (*)
from
gat_sqms.gat_sqms_band_iptv_view
group by
area_code;

2、使用sum条件查询

查询iptv_nbr不为空的数量

sum (
case
when iptv_nbr is null or iptv_nbr = '' then
0
else
1
end
)

sum里边使用case when 语句

当iptv_nbr is null 为0,else 为1

oracle中sum字符串方法

create or replace function sumstring(i_tablename   in varchar2,
                   i_groupcolname in varchar2,
                   i_resultcolname in varchar2,
                   i_groupcolvalue in varchar2,
                   i_separator   in varchar2)
 return varchar2 is
 type t_cur is ref cursor;
 c_cur  t_cur;
 v_sql  varchar2(2000);
 v_result varchar2(2000);
 v_tmp  varchar2(200);
 v_cnt  number := 0;
begin
 v_result := ' ';
 v_sql  := 'select  ' || i_resultcolname || '  from  ' || i_tablename ||
       '  where  ' || i_groupcolname || '  =  ' || i_groupcolvalue;
 open c_cur for v_sql;
 loop
  fetch c_cur
   into v_tmp;
  exit when c_cur%notfound;
  if v_cnt = 0 then
   v_result := v_tmp;
  else
   v_result := v_result || i_separator || v_tmp;
  end if;
  v_cnt := v_cnt + 1;
 end loop;
 close c_cur;
 return v_result;
end sumstring;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

上一篇:

下一篇: