postgresql - 检索两列中同一列的数据

标签 postgresql

我在 PostgreSQL 中有一个表,如下所示:

ID      NAME
450     China
525     Germany
658     Austria

我想查询 ID < 500 和 ID > 500 的每个名称,并使用

在两列中检索结果
array_to_string(array_agg(NAME),  ',  '). 

我需要以下结果:

column1 (ID < 500)      column2 (ID > 500)
China                   Germany, Austria

最佳答案

尝试使用条件聚合:

SELECT
    STRING_AGG(CASE WHEN ID < 500 THEN NAME END, ', ')  AS ID_lt_500,
    STRING_AGG(CASE WHEN ID >= 500 THEN NAME END, ', ') AS ID_gt_500
FROM yourTable;

enter image description here

Demo

编辑:

如果您使用的 Postgres 版本不支持 STRING_AGG,请按照您已经执行的操作进行操作:

SELECT
    ARRAY_TO_STRING(ARRAY_AGG(CASE WHEN ID < 500 THEN NAME END), ', ')  AS ID_lt_500,
    ARRAY_TO_STRING(ARRAY_AGG(CASE WHEN ID >= 500 THEN NAME END), ', ')  AS ID_gt_500
FROM yourTable;

Demo

关于postgresql - 检索两列中同一列的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54111755/

相关文章:

python - 如何在 Heroku(使用 python)上的 web 和 worker(不同的 dynos)之间通信数据?

ruby-on-rails - heroku PostgreSQL 数据库迁移错误

python - 在 django 中重新启动 postgres 连接

postgresql - 将rails应用程序部署到heroku时经常看到PG::InFailedSqlTransaction错误

arrays - 如何在 Postgres 中过滤 JSON 数组

sql - 我可以使用 SQL 语言插入以编程方式定义的 PostgreSQL 表吗?

sql - 在Postgres中的多个插入事务中引用插入的ID

sql - 改进此 SQL 查询的方法

PostgreSQL错误代码,设置自定义错误代码

python - Redshift : SqlAlchemy error on DateDiff call