title: Create table with dynamic columns
body: <p>I'm working on PostgreSQL 9.1, and I have the following tables:</p>
  
  <pre><code>element(element_id int, name varchar, category_id int)
  
  category(category_id int, name varchar)
  
  characteristic(characteristic_id int, name varchar, unit varchar)
  
  category_characteristic(characteristic_id, category_id)
  
  element_characteristic(element_id, characteristic_id, value)
  </code></pre>
  
  <p>Imagine the following tables:</p>
  
  
  
  <pre class="lang-none prettyprint-override"><code>elements
   ---------------------
  |id|name    |category |
  -----------------------
  |1 |'item 1'|1        |
  |2 |'item 2'|2        |
  |3 |'item 3'|1        |
   ---------------------
  
  category
   ----------------
  |id|name         |
  |----------------|
  |1 | 'category 1'|
  |2 | 'category 2'|
   ----------------
  
  characteristic
   --------------------------------
  |id|name               |unit     |
   --------------------------------
  |1 |'characteristic 1' | 'unit 1'| 
  |2 |'characteristic 2' | 'unit 2'|
  |3 |'characteristic 3' | 'unit 3'|
  |4 |'characteristic 4' | 'unit 4'|
  |5 |'characteristic 5' | 'unit 5'|
  |6 |'characteristic 6' | 'unit 6'|
   --------------------------------
  
  category_characteristic
   ------------------------------
  |category_id|characteristic_id |
  |------------------------------
  |1          |1                 |
  |1          |2                 |   
  |1          |4                 |
  |1          |5                 |
  |2          |1                 |
  |2          |3                 |
  |2          |5                 |
   ------------------------------
  
  element_characteristic
   ---------------------------------------
  |id_element|id_characteristic|value     |
  |---------------------------------------|
  |1         |1                |'value a' |
  |1         |2                |'value b' |
  |1         |4                |'value c' |
  |1         |5                |'value d' |
  |2         |1                |'value e' |
  |2         |3                |'value f' |
  |2         |5                |'value g' |
  |3         |1                |'value h' |
  |3         |2                |'value i' |
  |3         |4                |'value j' |
  |3         |5                |'value k' |
   ---------------------------------------
  </code></pre>
  
  <p>And now I want to get the following tables:</p>
  
  <pre class="lang-none prettyprint-override"><code> category 1
   ---------------------------------------------------------------------------
  |name   |characteristic 1|characteristic 2|characteristic 4|characteristic 5|
  | --------------------------------------------------------------------------|
  |item 1 |value a         |value b         |value c         |value d         |
  |item 3 |value h         |value i         |value j         |value k         |
   ---------------------------------------------------------------------------
  
  category 2
   -----------------------------------------------------------
  |name   |characteristic 1|characteristic 3|characteristic 5|
  | ----------------------------------------------------------
  |item 2 |value e         |value f         |value g         |
   ----------------------------------------------------------
  </code></pre>
  
  <p>I'm trying to understand what is the best procedure to go trough. I've read the tablefunc documentation but I just can't figure out how to make that procedures dynamically because there will be N entries on the category table. Some kind of directions will be very appreciated.</p>