您的位置:首页 > 数据库 > Oracle

Listagg函数转换nvarchar2类型字段结果为空,需使用to_char函数转换字段,然后再使用Listagg

2018-01-22 10:38 309 查看
Listagg函数功能:将一列值拼接成一行

Listagg在转换number类型的列非常成功,但在转换nvarchar2类型的列却为空,后来发现nvarchar2类型的列需要使用to_char函数转换一下,再使用Listagg函数就能成功转换

表结构:

create table PRO_PRODUCT_HI_PRICE
(
ID NVARCHAR2(36) not null,
PRODUCT_ID NVARCHAR2(36),
PRICE NUMBER(14,2),
TYPE NVARCHAR2(36),
PROJECT_ID NVARCHAR2(50),
DOC_NUM NVARCHAR2(36),
CREATE_TIME DATE,
UNIT_CODE NVARCHAR2(36)
)


数据:



1.       Listagg一个number类型的列--price

select ph.product_id,listagg(ph.price||'元',';')within group( order by ph.create_time desc) asprice
from pro_product_hi_price ph group by ph.product_id
结果:



2.      Listagg一个nvarchar2的列--doc_num

select ph.product_id,listagg(ph.doc_num,';') within group( order byph.create_time desc) as doc_num
from pro_product_hi_price ph group by ph.product_id
结果:



3.      将nvarchar2使用to_char函数转换后listagg

selectph.product_id,listagg(to_char(ph.doc_num),';')within group( order by ph.create_time desc) asdoc_num
from pro_product_hi_price ph group by ph.product_id
结果:



4.      使用Listagg合并两列的值,现将两列使用“||”拼接,然后再使用listagg函数

select ph.product_id,listagg(ph.price||'元,'||to_char(ph.doc_num),';') within group( order byph.create_time desc) as priceString
from pro_product_hi_price ph group by ph.product_id
结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐