ORACLE 行转列

最近遇到行转列的问题需要将同一个id下面的数据组装起来

ORACLE 行转列_第1张图片

与另一张主表中的数据组成一一条数据

sql代码如下


SELECT * FROM SE_REQ_ITEM_INFO srii 
LEFT JOIN ( SELECT ENTITY_ID, 
CASE WHEN attr_id = '201' THEN value END "201", 
CASE WHEN attr_id = 202 THEN value END "202",
CASE WHEN attr_id = 203 THEN value END "203"
FROM SE_REQ_ITEM_VALUE) ITEM_VALUE ON srii.ID = ITEM_VALUE.ENTITY_ID 

行专列之后表达式中注意的点  

ORACLE 行转列_第2张图片

可以看到值像一个稀疏矩阵一样,因此行专列还需要进行groupby操作 正确sql如下:

SELECT * FROM SE_REQ_ITEM_INFO srii LEFT JOIN (
   SELECT ENTITY_ID, max(CASE 
  WHEN attr_id = '201' THEN value
  ELSE ''
 END) 201, max(CASE 
  WHEN attr_id = 202 THEN value
  ELSE ''
 END) 摘要
 , max(CASE 
  WHEN attr_id = 203 THEN value
  ELSE ''
 END) 字数
FROM SE_REQ_ITEM_VALUE
GROUP BY ENTITY_ID) ITEM_VALUE ON srii.ID = ITEM_VALUE.ENTITY_ID

注意 groupby后面跟的是需要合并出来的id(共同的id)

你可能感兴趣的:(数据库,行专列,oracle,oracle,sql)