如何在选择 oracle 中将值分组到单行

Posted

技术标签:

【中文标题】如何在选择 oracle 中将值分组到单行【英文标题】:How do I group values ​on a single line in select oracle 【发布时间】:2021-09-27 18:03:00 【问题描述】:

我有一个格式如下的表格:

place   stage   type
AFA11    1     TYPE_A                                                            
AFA11    2     TYPE_B                                                           
AFA12    1     TYPE_A                                                            
AFA12    2     TYPE_B   

我正在尝试的查询是:

SELECT place,
CASE when type = 'TYPE_A' THEN stage end type_A ,
CASE when type= 'TYPE_B' THEN stage end type_B 
FROM table  WHERE place LIKE '%AFA%'

但它是这样返回的:

place   type_A  type_B
AFA11    1       null
AFA11   null      2
AFA12    1       null
AFA12   null      2
                   

但我需要这样的回报:

place   type_A  type_B
AFA11     1       2
AFA12     1       2

我怎么能得到这个回报?

【问题讨论】:

【参考方案1】:

你可以GROUP BY,用case表达式条件聚合

SELECT place,
       MAX(CASE when type = 'TYPE_A' THEN stage end) type_A ,
       MAX(CASE when type= 'TYPE_B' THEN stage end) type_B 
FROM table  WHERE place LIKE '%AFA%'
GROUP BY place

【讨论】:

谢谢@jarlh!!

以上是关于如何在选择 oracle 中将值分组到单行的主要内容,如果未能解决你的问题,请参考以下文章

在Vue js中将复选框选择的值分组到数组中

如何在Oracle sql中将行转换为按多列分组的列[关闭]

如何在mysql中将单行插入查询重构为多行插入查询?

如何在oracle中将值列表转换为逗号分隔值

如何在 Oracle SQL 中将变量设置为 select 语句的结果

如何在 SwiftUI 中将颜色选择器值保存到 UserDefaults 中?