Oracle Select Query - 根据列开始文本选择列

时间:2014-05-12 09:36:25

标签: sql database oracle oracle10g

我有一个表格,其中有一个字段,其中包含许多"项目编号" (从8%,2%等开始......)。这些项目编号还有其他组件,这些组件也存储在同一列中(因为每个组件也是一个项目)。现在要求的是,如果我遇到一个项目编号,其组件编号从8%开始,那么我需要针对主项目编号创建一个新列(一些称为800级项目的东西)并将其存储在那里,如果主要项目编号有2%的组件编号,那么我应该将它放入另一个类似(200级)的列中。

                     Field1  XLike YLike
                     ---------------------
 (Main Item)            XXXX       
 (Main Item's component)YYYY
 (Main Item's component)ZZZZ
 (Main Item's component)XABC
 (Main Item's component)YABC

现在,根据Field1中Sting的起始字符,我需要按以下方式隔离字段XLike和YLike中的值:

Field1   | XLike    | YLike
-------------------------
XXXX     | XABC     |      
YYYY     |          | YABC
ZZZZ     |          |
XABC     |          |
YABC     |          |

1 个答案:

答案 0 :(得分:0)

10g你可以尝试

select 
  wm_concat(case when field1 like '%X%' then field1 end)  XLike,
  wm_concat(case when field1 like '%Y%' then field1 end)  YLike
from table1

11g有listagg功能

select listagg(case when field1 like '%X%' then field1 end, ';') within group(order by field1) XLike,
listagg(case when field1 like '%Y%' then field1 end, ';') within group(order by field1) YLike
from table1