根据时间戳拼接两个表

时间:2018-03-23 01:15:11

标签: sql postgresql

我有两个Postgresql表,详细说明与其主题相对应的离散事件。

假设我的表A有3行,时间戳(t1,t4,t6),表B有4行,时间戳(t0,t2,t3,t7,t8)。

我想创建一个视图,显示表B中的每个记录与表B中的相应记录连接,使得表A中具有时间戳t_i的行与表B中的记录连接,时间戳直接< = t_i。

例如,t4处的表A行与t3处的表B行连接。

如果您想在符号中考虑它,请参阅这两个表以及合并的VIEW。

(时间戳)

Table A: |      |   |

Table B:/    / /     / /  ->

VIEW:   /|   / /|   |/ /

每个" |"符号采用前面的信息" /"符号

这对SQL查询是否可行?

谢谢!

1 个答案:

答案 0 :(得分:0)

符号没有多大帮助,但如果我理解正确,这可能就是这样:

WITH tableA as 
(
Select 'a1' aid, getdate()-1 A_Date union all
Select 'a4',getdate()-4 union all
Select 'a6',getdate()-6
)
,tableB as
(
Select 'b0' bid,getdate() b_date union all
Select 'b2' ,getdate()-2 union all
Select 'b3',getdate()-3 UNION ALL
SELECT 'b7',getdate()-7 union all
Select 'b8',getdate()-8 
)
, j as (
Select * ,row_number() over(partition by aid order by b_date desc) r# 
from tablea
join tableb on b_date<=a_date
)
Select * from j where r# =1