我想在每个表中使用DATE列连接两个表。出于分析目的,我希望将右表中的许多数据连接到左表,因为这些是来自同一对象的数据,使用不同的颗粒测量但不一定在同一天。一个例子:
LEFT TABLE L RIGHT TABLE R
|ID|measDate |someVal| |ID|measDate |someOtherVal|
|01|2015-02-14|0.123 | |01|2015-02-21|22.5 |
|01|2015-03-02|0.332 | |01|2015-02-22|21 |
|01|2015-03-08|0.222 | |01|2015-02-23|22.9 |
|01|2015-03-15|0.3231 | ...some more data
|01|2015-02-26|25.8 |
|01|2015-03-05|24.4 |
|01|2015-03-06|23.9 |
|01|2015-03-12|21.7 |
|01|2015-03-15|22.2 |
加入后的目标表应为:
|ID|measDate |someVal|someOtherVal|
|01|2015-02-21|0.123 |22.5 |
|01|2015-02-22|0.123 |21 |
|01|2015-02-23|0.123 |22.9 |
...some more data
|01|2015-02-26|0.123 |25.8 |
|01|2015-03-05|0.332 |24.4 |
|01|2015-03-06|0.332 |23.9 |
|01|2015-03-12|0.222 |21.7 |
|01|2015-03-15|0.3231 |22.2 |
我对PostgreSQL很新,但已经听说过generate_series()
和CROSS JOIN
。但也许其他一些技巧会做到这一点?将不胜感激任何提示并投票给好人:)非常感谢。
答案 0 :(得分:0)
不知道您的数据更多(即,您是否可以在任何一个表中都有重复的日期?)如果没有,measDate
列上的联接将起作用:
select l.ID, l.measeDate, l.somVal, r.someOtherVal
from l, r
where l.measeDate = r.measDate
如果存在重复的 ,那么您将需要指定一些有关这些的预期输出的更多信息。