Search code examples
google-bigquerypivotbigquery-udf

Pivot BigQuery table using multiple rows


In order to pivot my big query table, I found this code

SELECT 'SELECT id, ' || 
   STRING_AGG(
      'MAX(IF(key = "' || key || '", value, NULL)) as `' || key || '`'
   ) 
   || ' FROM `project.dataset.table` GROUP BY id ORDER BY id'
FROM (
  SELECT key 
  FROM `project.dataset.table`
  GROUP BY key
  ORDER BY key

But even if I apply EXECUTE IMMEDIATE function, it returns a string of the code above. What did I missed in that function ?

Thanks for your help


Solution

  • Use below

    EXECUTE IMMEDIATE(
    SELECT 'SELECT id, ' || 
       STRING_AGG(
          'MAX(IF(key = "' || key || '", value, NULL)) as `' || key || '`'
       ) 
       || ' FROM `project.dataset.table` GROUP BY id ORDER BY id'
    FROM (
      SELECT key 
      FROM `project.dataset.table`
      GROUP BY key
      ORDER BY key
    )  
    );