首页 > 解决方案 > 从 INNER JOIN 向 MIN 和 MAX 语句添加其他列

问题描述

我目前有一个查询,该查询根据 tbl1 和 tbl2 中的日期列返回一个 MIN 和 MAX 列,该列基于两个表中的 person_id 连接。我现在想开发这个查询来从两个表中引入额外的列。

这两张桌子每人有多个活动。简而言之,我想做的是查找与下面已经查询的 person_id 和 MIN 日期的组合相关的事件。所以在 tbl1 和 tbl2 中都有两个额外的事件 ID,但我只想要一个链接到下面的 MIN 日期和 person_id 组合的事件 ID。

当前查询基于 tbl1 和 tbl2 中的日期列返回 MIN 和 MAX 列

SELECT tbl1.person_id,
       LEAST(MIN(tbl1.Date), MIN(tbl2.Date)) AS start_date,
       GREATEST(MAX(tbl1.Date), MAX(tbl2.Date)) AS end_date,
FROM `database_name.table_name1` tbl1 JOIN
     `database_name.table_name2` tbl2
     ON tbl1.person_id = tbl2.person_id JOIN
     `database_name.table_name3` tbl3
     ON tbl1.person_id = tbl3.person_id    
GROUP BY tbl1.person_id

期望的结果:

Col_1: Person_id (Integer, e.g. 1234)
Col_2: start_date (YYYY-MM-DD)
Col_3: end_date (YYY-MM-DD)
Col_5: additional column that is the most recent from either table based on two different columns that are the match to the combination of the person_id in column 1 and the start_date in column 2. This could be an INTEGER from either tbl1.eventID1 or tbl2.eventID2
Col_5: same as above but a STRING

我希望这是有道理的。

标签: sqlgoogle-bigquerymaxinner-joinmin

解决方案


推荐阅读