使用完全外连接 oracle 按一列分组

Posted

技术标签:

【中文标题】使用完全外连接 oracle 按一列分组【英文标题】:group by one column with full outer join oracle 【发布时间】:2017-03-05 17:21:20 【问题描述】:

我有以下疑问...

SELECT msn.id_notificacion AS notifiId, plt.planta_id AS plantaId, plt.planta_desc AS plantaDesc, orgPlt.org_id AS orgIdPlanta, 
orgPlt.org_desc AS orgDescPlanta, age.agencia_id AS agenciaId, age.agencia_desc AS agenciaDesc, orgAge.org_id AS orgIdAgencia, 
orgAge.org_desc AS orgDescAgencia, msn.user_contac AS usuario, msn.email_orig AS correo 
FROM cat_cpd_orig_ip msn 
FULL OUTER JOIN cat_plantas_erp plt ON msn.planta_id = plt.planta_id 
FULL OUTER JOIN cat_planta_loc pltLoc ON plt.planta_id = pltLoc.planta_id 
FULL OUTER JOIN cat_organizacion_adi orgPlt ON pltLoc.org_id = orgPlt.org_id 
FULL OUTER JOIN cat_agencia_erp age ON msn.agencia_id = age.agencia_id 
FULL OUTER JOIN cat_agencia_loc ageLoc ON age.agencia_id = ageLoc.agencia_id 
FULL OUTER JOIN cat_organizacion_adi orgAge ON ageLoc.org_id = orgAge.org_id 
WHERE msn.id_notificacion IS NOT NULL GROUP BY usuario ORDER BY usuario

但是当我对结果进行分组时,出现以下错误...

ORA-00904: "USUARIO": identificador no valido
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error en la línea: 11, columna: 48

我的查询返回以下结果...

27  4570    BLM_ATITALAQUIA                     63  BARCEL                  PRUEBA PLANTA TRES  prueba.planta_3@grupobimbo.com
9   109     WM_MEXICO                           62  BIMBO                   PRUEBA PLANTA DOS   prueba.planta_2@grupobimbo.com
8   727     STE_MARINELA VILLAHERMOSA           62  BIMBO                   PRUEBA PLANTA DOS   prueba.planta_2@grupobimbo.com
29  1225    BLM_LAGUNA                          63  BARCEL                  PRUEBA PLANTA TRES  prueba.planta_3@grupobimbo.com
28  1605    BLM_CDIS OCCIDENTE                  63  BARCEL                  PRUEBA PLANTA TRES  prueba.planta_3@grupobimbo.com
3   5483    GLO_MEXICO                          64  EL GLOBO                PRUEBA PLANTA UNO   prueba.planta_1@grupobimbo.com

但我需要以下结果...

3   5483    GLO_MEXICO                          64  EL GLOBO                PRUEBA PLANTA UNO   prueba.planta_1@grupobimbo.com
9   109     WM_MEXICO                           62  BIMBO                   PRUEBA PLANTA DOS   prueba.planta_2@grupobimbo.com
27  4570    BLM_ATITALAQUIA                     63  BARCEL                  PRUEBA PLANTA TRES  prueba.planta_3@grupobimbo.com

我需要按“usuario”对结果进行分组,你能帮帮我吗?

谢谢!

【问题讨论】:

【参考方案1】:

对于 Oracle,您不能在 GROUP BY 中使用表别名。因此,对您的错误的明显修复是:

GROUP BY msn.user_contac
ORDER BY msn.user_contac

但是,这只会产生另一个错误——SELECT 中有无数列没有聚合,也没有在 GROUP BY 中。它们会导致另一个错误。

您的问题没有具体说明您想做什么。它只提到了GROUP BY 错误。所以,这回答了你的问题,但它并没有解决你的问题。

您可能想问另一个问题,对您正在尝试做的事情进行更多解释,也许是样本数据和期望的结果。

【讨论】:

我在问题正文中详细说明了我需要做什么。谢谢!

以上是关于使用完全外连接 oracle 按一列分组的主要内容,如果未能解决你的问题,请参考以下文章

数据库编程2 Oracle 过滤 函数 分组 外连接 自连接

我需要连接三个表,将结果按一列分组,并显示另一列的最大值

Pandas数据框:按一列分组,但由其他列连接和聚合[重复]

oracle中的全外连接

oracle连接总结(内连接外连接自然连接,交叉连接,自连接)

使用外连接和分组来解决查询