PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Postgres JSONb para XML com tag_name e tag_value


Com base na solução do @Georges Martin, eu não usaria uma junção lateral e uma cláusula de agrupamento, mas apenas uma subconsulta aninhada:
SELECT XMLELEMENT(
  NAME "Company", 
  XMLATTRIBUTES(id AS id, field1 AS field), 
  (SELECT XMLAGG(
    XMLELEMENT(
      NAME "companyTag", 
      XMLATTRIBUTES(
        attr.key AS "tagName", 
        attr.value AS "tagValue"
      )
    )
  ) FROM JSONB_EACH_TEXT(attributes) AS attr)
) FROM comp_emp;