【发布时间】:2018-10-04 19:58:14
【问题描述】:
表格数据样本:
--------------------------
| key | domain | value |
--------------------------
| a | en | English |
| a | de | Germany |
返回我需要的结果的查询:
select * from
(
select t1.key,
(select value from TABLE where t1.key=key AND code='en') en,
(select value from TABLE where t1.key=key AND code='de') de
from TABLE t1
) as t2
查询返回的数据:
---------------------------
| key | en | de |
---------------------------
| a | English | Germany |
我不想列出所有可用的域:
(select value from TABLE where t1.key=key AND code='*') *
是否可以在 Postgres 中使这个查询更加动态:自动添加表中存在的所有域列?
【问题讨论】:
-
所以你想要所有不同的非空域值作为列名?您可能必须在 plpgsql 中使用动态 sql 并使用 EXECUTE 执行它。
-
动态列数?正如@eurotrash 所说,普通 SQL 无法做到这一点,但 pl/pgSQL 可以。
标签: sql postgresql dynamic-sql crosstab