Pivot BigQuery table using multiple rows

125 Views Asked by At

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

1

There are 1 best solutions below

5
On BEST ANSWER

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
)  
);