我想实现的效果很简单
一个查询语句有可能返回多个记录时,用‘;’隔开并连接到一个字符串变量上如:记录1;记录2;记录3
最后一个记录的话还加‘;’会很难看且引起歧义以为后面还有,如:记录1;于是想这样编写
FOR REC_N IN (SELECT TBGC_NO FROM ……
WHERE ……
)LOOP --定义游标循环输出
V_TBGCNO:=V_TBGCNO||REC_N.TBGC_NO; --每条记录连接到字符变量V_TBGCNO
EXIT WHEN REC_N%LAST_RECORD=TRUE --最后一条记录时退出,不进行下一步(此处不知道PL/SQL怎么写)
V_TBGCNO:=V_TBGCNO||';'; --不为最后记录时,分号隔开
END LOOP;
求解……
一个查询语句有可能返回多个记录时,用‘;’隔开并连接到一个字符串变量上如:记录1;记录2;记录3
最后一个记录的话还加‘;’会很难看且引起歧义以为后面还有,如:记录1;于是想这样编写
FOR REC_N IN (SELECT TBGC_NO FROM ……
WHERE ……
)LOOP --定义游标循环输出
V_TBGCNO:=V_TBGCNO||REC_N.TBGC_NO; --每条记录连接到字符变量V_TBGCNO
EXIT WHEN REC_N%LAST_RECORD=TRUE --最后一条记录时退出,不进行下一步(此处不知道PL/SQL怎么写)
V_TBGCNO:=V_TBGCNO||';'; --不为最后记录时,分号隔开
END LOOP;
求解……
WHERE ……
)LOOP --定义游标循环输出
V_TBGCNO:=V_TBGCNO||REC_N.TBGC_NO; --每条记录连接到字符变量V_TBGCNO
EXIT WHEN REC_N%LAST_RECORD=TRUE --最后一条记录时退出,不进行下一步(此处不知道PL/SQL怎么写)
V_TBGCNO:=V_TBGCNO||';'; --不为最后记录时,分号隔开
END LOOP;
这个后面再加个
V_TBGCNO:=tirm(V_TBGCNO,';');
--应该这样
V_TBGCNO:=tirm(';' from V_TBGCNO);--例如
select trim(';' from ';sdfds;') from dual;TRIM(
-----
sdfds
select rtrim(';sdfds;',';') from dual
V_TBGCNO:=tirm(leading ';' FROM V_TBGCNO);
with a as (
select 1 a from dual
union all
select 2 from dual
union all select 3 from dual)
select replace(wmsys.wm_concat(a),',',';')
from a结果
1;2;3
max(decode(level,1,name))as reason1, max(decode(level,2,name))as reason2,max(decode(level,3,name))as reason3, max(decode(level,4,name))as reason4
from (select an.name,
row_number()over(partition by cb.id order by cb.id)as numcount from bill cb
left join cnodle cn on(cb.id=cn.id)
left join anodle an on(cn.id=an.id)
inner join t_staff ss on(cb.staff=ss.staff) where
(to_char(cb.begin_time,'hh24')>'22' or to_char(cb.begin_time,'hh24')<'09')
)join1
start with numcount=1
connect by numcount-1 = prior numcount
group by join1.id