[英]From multiple rows to single column in Postgres
I am using Postgres 9.5 via pgAdmin 4 with read only access and im trying to write a select query that converts data from this form: 我正在通过具有只读访问权限的pgAdmin 4使用Postgres 9.5,我正在尝试编写一个select查询,该查询将从这种形式转换数据:
+----------+-------------------+--------------------+----------------+
| username | filters | groups | roles |
+----------+-------------------+--------------------+----------------+
| kd24 | Khaled <27607> | V1 | NewsStand User |
| kd24 | Khaled <27607> | V1 | User |
| kd24 | Khaled <27607> | Weekly KPIs | NewsStand User |
| kd24 | Khaled <27607> | Detailed Sales | User |
| kd24 | Khaled <27607> | Qanz Monthly Group | User |
| kd24 | Khaled <27607> | Detailed Sales | NewsStand User |
| kd24 | Khaled <27607> | Qanz Monthly Group | NewsStand User |
| kd24 | Khaled <27607> | Weekly KPIs | User |
| kd24 | Khaled <F_27607> | Weekly KPIs | User |
| kd24 | Khaled <F_27607> | Weekly KPIs | NewsStand User |
| kd24 | Khaled <F_27607> | Qanz Monthly Group | NewsStand User |
| kd24 | Khaled <F_27607> | Detailed Sales | User |
| kd24 | Khaled <F_27607> | V1 | User |
| kd24 | Khaled <F_27607> | Detailed Sales | NewsStand User |
| kd24 | Khaled <F_27607> | Qanz Monthly Group | User |
| kd24 | Khaled <F_27607> | V1 | NewsStand User |
| kd24 | khaled.d | Weekly KPIs | User |
| kd24 | khaled.d | V1 | NewsStand User |
| kd24 | khaled.d | Detailed Sales | NewsStand User |
| kd24 | khaled.d | Qanz Monthly Group | NewsStand User |
| kd24 | khaled.d | Weekly KPIs | NewsStand User |
| kd24 | khaled.d | V1 | User |
| kd24 | khaled.d | Detailed Sales | User |
| kd24 | khaled.d | Qanz Monthly Group | User |
+----------+-------------------+--------------------+----------------+
To this form: 填写此表格:
+----------+-----------------------------------------------+-----------------------------------------------------+---------------------+
| username | filters | groups | roles |
+----------+-----------------------------------------------+-----------------------------------------------------+---------------------+
| kd24 | Khaled <27607>, Khaled <F_27607>,khaled.d | V1, Weekly KPIs, Detailed Sales, Qanz Monthly Group | NewStand User, User |
+----------+-----------------------------------------------+-----------------------------------------------------+---------------------+
Noting that values in columns filters, groups and roles might change. 注意列过滤器,组和角色中的值可能会更改。
Is the a postgres select script that can perform that? 是一个可以执行该操作的postgres选择脚本?
Much appreciated! 非常感激!
You can use distinct
keyword with aggregation function like array_agg to collect distinct values from each column: 您可以使用与诸如array_agg之类的聚合函数一起使用
distinct
关键字,以从每一列中收集不同的值:
select
array_agg(distinct username) as username,
array_agg(distinct filters) as filters,
array_agg(distinct groups) as groups,
array_agg(distinct roles) as groups
from YourTable;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.