根据条件分组/不同列[关闭]

Posted

技术标签:

【中文标题】根据条件分组/不同列[关闭]【英文标题】:Group by/Distinct column based on condition [closed] 【发布时间】:2019-12-04 09:25:09 【问题描述】:

我的桌子上有child_entity_idparent_entity_identity_name。一个父母可以有多个孩子。一个孩子可以是一个独立的实体,可能没有父母。在这种情况下,父列将为空。

现在,我需要对每个父母执行一个流程。但是如果父级为空,则需要在子级上执行它。如何从表中获取必要的记录?

Child_Entity_ID    Parent_Entity_ID    Entity_Name
    1011                  1000            xxx
    1022                  1000            yyy
    1033                                  abc   

现在我需要执行两次。一个用于父母:1000,另一个用于独立孩子:1033。

预期结果:第 1 行和第 3 行。

进一步处理:需要将 ID 详细信息和实体名称发送到另一个 shell 脚本。

如何实现这一点。请提供任何帮助。

【问题讨论】:

你需要的输出是什么 您正在寻找的只是带有 LEFT JOIN 的 SELECT 语句吗?您需要查看什么,即输出? 你想用这些数据做什么?什么过程?预期输出? 我需要整行,例如,从给定的示例中,我需要第 1 行和第 3 行。我不需要第 2 行。然后Process就是执行一个带有child_entity_id和entity_name等几个派生值的shell脚本 你已经解释过了,但是问题已经结束了。您可以通过多种方式进行操作,最短的是带有first 选项的解析函数,例如dbfiddle demo。 【参考方案1】:

希望,我正确理解了您的问题。要获得唯一的 Parent_Entity_ID(如果为 null,则为 Child_Entity_ID),您可以查看以下查询。

select distinct coalesce(Parent_Entity_ID, Child_Entity_ID) from table;

【讨论】:

以上是关于根据条件分组/不同列[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据不同的分组条件得到两个数量列的总和?

Oracle PL/SQL - 根据条件对不同列进行选择、分组、排序、where-clause 的最佳方法?

dplyr:根据不同条件分组,然后返回top n

在sql中使用case语句根据某些条件对列进行分组

根据多个条件将一列拆分为几列并分组

使用pandas按列分组,然后根据条件新建一列