【问题标题】:Postgres: How to convert SQL result into column name & valuePostgres:如何将 SQL 结果转换为列名和值
【发布时间】:2021-06-03 09:47:30
【问题描述】:

我有一个包含数据的表,所有列都是文本类型。

示例数据如下图

SELECT name, setting 
FROM pg.settings 
WHERE name IN ('log_destination', 'logging_collector', 'log_directory', 'log_filename', 'log_line_prefix')

现在我想将这两列转换为单独的column name -> value 格式。

预期输出:

log_directory log_filename log_line_prefix logging_collector log_destination
log postgresql-%Y-%m-%d_%H%M%S.log %t off csvlog,syslog

如何使用纯 SQL 进行归档? 请提出建议。

【问题讨论】:

  • 我认为你可以使用交叉表功能

标签: sql postgresql


【解决方案1】:

您可以使用条件聚合,在 Postgres 中使用 filter:

SELECT MAX(setting) FILTER (WHERE name = 'log_destination') as log_destination,
       MAX(setting) FILTER (WHERE name = 'logging_collector') as logging_collector,
       MAX(setting) FILTER (WHERE name = 'log_directory') as log_directory,
       MAX(setting) FILTER (WHERE name = 'log_filename') as log_filename,
       MAX(setting) FILTER (WHERE name = 'log_line_prefix') as log_line_prefix,
FROM pg.settings s
WHERE name IN ('log_destination', 'logging_collector', 'log_directory', 'log_filename', 'log_line_prefix');

【讨论】:

  • 太棒了,谢谢@Gordon Linoff
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 2023-04-07
  • 2020-03-07
  • 1970-01-01
相关资源
最近更新 更多