首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据Postgres中一列(每组)的不同值选择行

根据Postgres中一列(每组)的不同值选择行
EN

Stack Overflow用户
提问于 2020-07-10 06:57:27
回答 1查看 109关注 0票数 0

我在PostgreSQL 11中有下面的表格。

代码语言:javascript
复制
col1    col2                          col3          col4
3876    Dexamethasone                 Dexamethasone A01AC
3876    Dexamethasone                 Dexamethasone C05AA
3876    Dexamethasone                 Dexamethasone D07AB
3924    Dexamethasone                 Dexamethasone A01AD
3924    Dexamethasone                 Dexamethasone C05AB
3925    Dexamethasone sulphate        Dexamethasone A01AC
3925    Dexamethasone sulphate        Dexamethasone C05AA

我希望获得具有不同值的col1、col2、col3和聚合col4的行,如果col1、col2、col3是相同的,则取col1的第一个值。

期望的输出是:

代码语言:javascript
复制
col1    col2                    col3            col4
3876    Dexamethasone           Dexamethasone   A01AC | C05AA | D07AB | A01AD | C05AB
3925    Dexamethasone sulphate  Dexamethasone   A01AC | C05AA

我试着跟踪查询。

代码语言:javascript
复制
select distinct on (col1, col2, col3) 
        col1, 
        col2, 
        col3, 
        string_agg(col4, ',') 
from table
where col2 ilike '%dexamethasone%' and col1 = 'Dexamethasone'
group by col1, col2, col3;

我如何限制输出,以获得一个col1值每col2,col3。就像。选择col1值: 3876,不包括3924。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-10 07:15:16

你可以试试这样的东西

代码语言:javascript
复制
select min(col1) as col1 , 
                    col2, 
                    col3, 
                    string_agg(col4, ',') 
               from table 
               where col2 like '%dexamethasone%' 
                        and col1 = 'Dexamethasone' 
               group by col2, col3;

试着读postgres中的group子句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62828845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档