中易网

Oracle 联合查询后 如何对字段进行分组 ???

答案:3  悬赏:50  
解决时间 2021-03-23 04:48


对 dept_id 和cost_scheme 这两个字段先后进行分组



最佳答案
select dept_id,cost_id,cost_scheme from tablename where rowid in (select min(rowid) from tablename group by dept_id,cost_scheme);
全部回答
create  table  info (     users    varchar(100) ); insert into info values('usera@userb@userc'); insert into info values('userb@userc@userd'); insert into info values('userc@userd@usere'); column "用户" format a15 select   to_char(strvalue) as "用户",   count(*) as "用户数" from   info,   table(fn_split( info.users,  '@')) group by   to_char(strvalue) order by   1; 用户                用户数 --------------- ---------- usera                    1 userb                    2 userc                    3 userd                    2 usere                    1 上面这样的效果, 是否满足你的需求? 如果满足的话, 你再往下看, 下面是 存储过程的相关代码 oracle 需要首先在数据库中, 创建好 类型 与 函数。 来实现一个  split 功能的处理。 -- 定义一个对象类型. create or replace type ty_row_str_split as object (strvalue varchar2 (4000)); / -- 定义一个 表/数组类型, 内容是前面定义的那个对象. create or replace type ty_tbl_str_split is table of ty_row_str_split; / -------------------- -- 字符分割函数. -- 参数1:  被分割的源字符串 -- 参数2:  用于拆分的字符串。 -------------------- create or replace function fn_split(   p_str       in varchar2,   p_delimiter in varchar2) return ty_tbl_str_split is   j         int := 0;   i         int := 1;   -- 被分割的源字符串 的长度.   len       int := 0;   -- 分隔字符串的长度   len1      int := 0;   -- 暂存的中间每一个单元的文本信息.   str       varchar2(4000);   -- 预期返回结果.   str_split ty_tbl_str_split := ty_tbl_str_split(); begin   -- 被分割的源字符串 的长度.   len   := length(p_str);   -- 分隔字符串的长度.   len1 := length(p_delimiter);   -- 遍历 被分割的源字符串.   while j < len loop     -- 在被分割的源字符串中, 查询 分隔字符串.     j := instr(p_str, p_delimiter, i);     if j = 0 then       -- j=0 意味着没有找到.   -- 可以理解为是查询到最后一个单元了.   -- 设置 j := len, 让外部的循环处理可以结束了.       j  := len;       -- 获取最后一个单元的内容.       str := substr(p_str, i);       -- 结果追加一行.       str_split.extend;       -- 设置结果内容.       str_split(str_split.count) := ty_row_str_split(strvalue => str);       if i >= len then         exit;       end if;     else       -- 如果在被分割的源字符串中,找到了 分隔字符串.       -- 首先,获取分割的内容.       str := substr(p_str, i, j - i);       -- 然后设置索引, 下一次再查找的时候,从指定的索引位置开始(不是从0开始找了)       i := j + len1;       -- 结果追加一行.       str_split.extend;       -- 设置结果内容.       str_split(str_split.count) := ty_row_str_split(strvalue => str);     end if;   end loop;   return str_split; end fn_split; / 函数创建完毕以后,可以开始做查询的处理. sql> select to_char(strvalue) as value from table(fn_split('aa,bb,cc',',')); value ------------------------------------------------------------------------------- aa bb cc
你这分组是什么条件,我怎么看不懂呢,你把结果解释一下,把结果中的每个字段什么意思写出来,不然不好回答
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
洗衣机标准档突然用不了了
离娄底最近的机场
飞利浦家庭影院卡拉ok怎么用
u8智能手表死机怎么办?
沈阳发往葫芦岛的特急送快递单号1009713564
汪峰唱过多少首歌?全部歌名是什么?
中酒连锁加盟晋级制度是怎样的呢?他们是怎么
深圳市联合金融联小额贷款股份有限公司增城分
南京哪里有收购成品十字绣的
windfire q5和c6 c8哪个好
奇骏和途观谁比较好一点?个人来讲比较喜欢途
成都瑞联路属于哪个街道?
广电网络高清数字机顶盒(DB_5926e)如何关闭Wi
三星a9剩余流量图标设置
如何矫正智齿
推荐资讯
中年妇女冬季养生
想搞活动,有没有签约的恺撒堡钢琴家?
为什么我代理的化妆品都销得不行,可是朋友就
什么歌适合在发廊中播?
《辣妈辣妹》的安娜是谁演的
求和狐仙同居以后gl百度云。
江苏省盐城市响水县新荡农场邮编是什么?
48和7的最小公倍数是多少
学平险定寿是什么意思平安的
打耳洞 不消肿?!耳垂淤青
我在网上买个东西!结果是假的!我要投诉他!
锂电池电动车充满后还会继续期充电吗
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?