oracle中把查询到的一条记录的某个字段赋值给一个变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中把查询到的一条记录的某个字段赋值给一个变量相关的知识,希望对你有一定的参考价值。
jh2 varchar2(20);
insert into T_SCRB(rq,jh)
select rq+1,jh from T_SCRB where trunc(rq)=rq_in and
rq not in (select rq from T_SCRB where trunc(rq)=rq_in+1);
想把一条数据复制到下一天 复制完成之后想获得jh赋值给jh2
into v_a
from table; 参考技术C select jh from T_SCRB into jh2 where trunc(rq)=rq_in+1;追问
这样还是不行啊,因为主键是rq和jh 仅一个日期是对应多条数据的
追答你的数据格式贴出来看看
Oracle中将查询出的多条记录的某个字段拼接成一个字符串的方法
select billid,CONTAINER_NO from FM_PACKING_LINE
查询的结果是
我想把billid等于15609的所有 CONTAINER_NO 值合并在同一字段
要显示这个
,求Oracle的sql语句,谢谢
1、先创建一个JSONObject对象。
2、然后把JSONObject对象转换成字符串且把“”去掉,因为等下需要拼接其他数据。
3、判断转换完的字符串是否是空数据还有已经有数据了,如果有就需要加“,”。
4、字符串开始拼接字符串,这里被拼接的字符串一定要符合json格式。
5、字符串拼接完成后把之前去掉的“”重新加上代表一个完整的json字符串结束。
6、重新把拼接好的字符串转换成JSONObject。
7、然后使用get(key)的方法来获取拼接字符串的属性值,能获得就说明拼接的字符串有效了。
参考技术A select wm_concat(t.email) from TEMP t,这是oracle 自带函数,如果超过4000会报错,超过4000就只能自己写函数了 参考技术B select billid,listagg(container_no,';') within group (order by container_no) from fm_packing_line group by billid追问大神 我执行了
但是报错了 结果是这样的 ,我是Oracle10g
from fm_packing_line
group by billid 参考技术C with temp as(
select 'China' nation ,'Guangzhou' city from dual union all
select 'China' nation ,'Shanghai' city from dual union all
select 'China' nation ,'Beijing' city from dual union all
select 'USA' nation ,'New York' city from dual union all
select 'USA' nation ,'Bostom' city from dual union all
select 'Japan' nation ,'Tokyo' city from dual
)
select nation,listagg(city,',') within GROUP (order by city)
from temp
group by nation
这是最基础的用法:
LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)
用法就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来。
非常方便 参考技术D 可以考虑使用wmsys.wm_concat方法,该方法是将记录的值使用逗号间隔拼接
使用方法如下:
select wmsys.wm_concat(name) name from idtable;
NAME
---------- --------------------------------------------------------------------------------
ab,bc,cd
以上是关于oracle中把查询到的一条记录的某个字段赋值给一个变量的主要内容,如果未能解决你的问题,请参考以下文章