СОЮЗ на основе общей колонки - PullRequest
0 голосов
/ 13 марта 2020

У меня есть 2 таблицы:

enter image description here

И я хочу создать запрос UNION, основанный на общих строках EAN. Например, в конце я хочу, чтобы мой стол выглядел следующим образом: enter image description here

Любая помощь будет принята с благодарностью!

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT * FROM (
  SELECT * FROM `project.dataset.table1` UNION ALL
  SELECT *, NULL AS company FROM `project.dataset.table2`
)
WHERE ean IN (
  SELECT DISTINCT ean
  FROM `project.dataset.table1` 
  JOIN `project.dataset.table2` 
  USING (ean)
)   

Применительно к выборочным данным из вашего вопроса - вывод

Row ean price   company lowestPrice  
1   abc 12      1       12   
2   abc 23      2       12   
3   fgh 43      1       43   
4   fgh 82      2       43   
5   abc 21      1       null     
6   fgh 54      1       null
1 голос
/ 13 марта 2020

Попробуйте это?

SELECT
  a.ean,
  a.price,
  a.company,
  a.lowestPrice
FROM
  Table1 a
UNION
SELECT
  b.ean,
  b.price,
  b.company,
  NULL AS lowestPrice
FROM
  Table2 b 
  INNER JOIN Table1 c ON c.ean = b.ean
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...