Eu tenho duas tabelas da seguinte forma (em um banco de dados Postgres 10):
Milho:
id|acreage|date |region
1 |20 |2018-10-18|A
2 |10 |2018-10-07|A
3 |26 |2018-10-18|B
4 |06 |2018-10-07|B
Arroz:
id|acreage|date |region
1 |17 |2018-10-18|A
2 |29 |2018-10-09|A
3 |24 |2018-10-18|B
4 |09 |2018-10-09|B
Quero obter o seguinte resultado:
Maize|Paddy|date |Region
20 |17 |2018-10-18|A
Null |29 |2018-10-09|A
10 |Null |2018-10-07|A
Observe que quando as datas não coincidem, gostaria de obter um Null na célula.
Eu tenho tentado escrever uma consulta assim, mas só recebo a primeira linha, e não a 2ª e 3ª linhas:
Select c1.acreage as "Maize", c2.acreage as "Paddy", c1.date, c1.region FROM
Maize c1
FULL OUTER JOIN Paddy c2 ON c1.date =c2.date AND c1.region=c2.region
order by c1.date;
Obviamente, a data no Join está causando o problema; Mas não sei como removê-lo e ainda obter os valores correspondentes em uma linha.
violino
Aqui está uma solução alternativa:
Acabei usando isso, pois essa consulta SQL é gerada por código, e a quantidade de tabelas pode variar. Esse tipo de consulta é mais legível e mais facilmente gravável por código.