问题描述
- oracle行转列问题。纯SQL
-
oracle中有一张读者表(TableReader),里面有一列保存读者类型(ColReaderTypeIds),存的值是类似(1,2,3)这种,分别对应读者类型表(TableReaderType)中的类型(ReaderTypeId),1,类型1;2,类型2;3,类型3。是三行数据!读者可以有多个类型。TableReaderType中的数据不确定,所以不能用case when。我要在查询TableReader表中的ColReaderTypeIds的时候,将该列显示成名称,而不是ID,应该怎么做?意思就是,ColReaderTypeIds列存的是"1,2,3";显示出来后变成"类型1,类型2,类型3"
解决方案
类似下面这样
select 读者名称,wm_sys.wm_concat (ReaderTypeId) from(
select 读者名称,ReaderTypeId from TableReader,TableReaderType where instr(TableReader.ColReaderTypeIds,ReaderTypeId)>0
) group by 读者名称
时间: 2024-09-09 01:54:52