PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgres JSONb in XML con tag_name e tag_value

Basandosi sulla soluzione di @Georges Martin, non userei un join laterale e una clausola di raggruppamento, ma piuttosto solo una sottoquery nidificata:

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;