I am trying to perform the following query in BigQuery:
SELECT * FROM ( SELECT date, grob as `grob_r1` FROM `mytab_tbl` WHERE region = "r1" ) AS TAB_1, ( SELECT date, grob as `grob_r2` FROM `mytab_tbl` WHERE region = "r2" ) AS TAB_2 WHERE TAB_1.date = TAB_2.date
It is basically a selection on the same table applying different condition rules, with the aim to then create a view.
However, I get the following error: Duplicate column names in the result are not supported. Found duplicate(s): date
Do you have any idea about how to fix this?
Advertisement
Answer
Mainly, your SELECT *
will just get all columns from TAB_1 and TAB_2, and in both cases, you have the date field.
SELECT TAB_1.*, TAB_2.grob_r2 FROM ( SELECT date, grob as `grob_r1` FROM `mytab_tbl` WHERE region = "r1" ) AS TAB_1, ( SELECT date, grob as `grob_r2` FROM `mytab_tbl` WHERE region = "r2" ) AS TAB_2 WHERE TAB_1.date = TAB_2.date
In your case, your join condition is an equality, but if you wanted to get the date from TAB_2 as well in your results, or if you want to get all columns from TAB_2, whatever they are, you could do something like
SELECT TAB_1.*, TAB_2.* EXCEPT(date), TAB_2.date AS tab_2_date FROM ...
edit: To help you with the FULL JOIN question.
SELECT TAB_1.*, TAB_2.grob_r2 FROM ( SELECT date, grob as `grob_r1` FROM `mytab_tbl` WHERE region = "r1" ) AS TAB_1 FULL JOIN ( SELECT date, grob as `grob_r2` FROM `mytab_tbl` WHERE region = "r2" ) AS TAB_2 ON TAB_1.date = TAB_2.date