【问题标题】:Categorize data using sql使用sql对数据进行分类
【发布时间】:2019-12-19 10:20:36
【问题描述】:

我在状态表 (newstat) 中有以下格式的数据,具有唯一标识符 id

  

 id status status1
----- 
 1 COMP ACC REQ 
 2 COMP DECL 
 3 ACR  ACC REQ 
 4 ACR  CANCEL 
 5 ACW     DECL  
 6 ACW     ACC REQ

.....

使用 sql 查询 (oracle 11g) 我需要数据为嵌套格式

  
 COMP    ACC REQ, DECL
 ACR     ACC REQ, CANCEL
 ACW     ACC REQ, DECL

我尝试过使用 LISTAGG()、wm_concat 的代码

尝试使用 sql 但都产生错误。

ORA-00904:“WM_CONCAT”:标识符无效

【问题讨论】:

  • 您的确切 oracle 版本是什么? select banner from v$version where banner like 'Oracle%'; 会告诉你。 listagg() 是在 11.2 中引入的——也许你正在使用 11.1——在 11.2 中这绝对有效:dbfiddle.uk/…

标签: sql oracle oracle11g string-aggregation


【解决方案1】:

这不行吗?

select status, listagg(status1, ', ') within group (order by id) as statuses
from t
group by status
order by min(id);

【讨论】:

  • 我试过一个类似的,包括这个。当我运行此查询时,出现以下错误 - ORA-01489:字符串连接的结果太长
  • @738560 。 . .那是一个不同的错误。您无法完全按照您的意愿行事,因为数据不适合您想要的列。您可以使用 CLOB 或找到一些方法来缩短结果字符串。
猜你喜欢
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
相关资源
最近更新 更多