Sql 如何按查询“关联”分组中的列?

Sql 如何按查询“关联”分组中的列?,sql,join,group-by,google-cloud-sql,Sql,Join,Group By,Google Cloud Sql,说输入: 表T1 row_num_unimportant indicator 1 111 2 222 表T2 row_num_unimportant indicator val_timestamp val_of_interest2 1 112 timestamp2 value1 2

说输入:

表T1

row_num_unimportant   indicator
        1                 111
        2                 222
表T2

row_num_unimportant   indicator   val_timestamp   val_of_interest2
        1                 112       timestamp2        value1
        2                 113       timestamp1        value3
        3                 114       timestamp3        value2
        4                 223       timestamp4        value5
        5                 224       timestamp5        value4
我想看看加入结果

indicator    min_timestamp    val_of_interest2
   111         timestamp1          value3
   222         timestamp4          value5
困难在于要使感兴趣的值2与最小时间戳相关联

以天真的方式说:

SELECT
  indicator,
  MIN(val_timestamp) AS min_timestamp,
  ???? AS val_of_interest2
FROM (
  SELECT
    t1.indicator,
    t2.val_timestamp,
    t2.val_of_interest2
  FROM
    T1 t1
    JOIN T2 t2
    ON (t2.indicator >= t1.indicator)
)
GROUP BY
  indicator
基本上,我应该在里面放些什么???部分还是我需要一个不同的查询

谢谢

您不会为此使用group by。一个选项是窗口功能:

SELECT indicator, val_timestamp, val_of_interest2
FROM (SELECT t1.indicator, t2.val_timestamp, t2.val_of_interest2,
             ROW_NUMBER() OVER (PARTITION BY t1.indicator ORDER BY t2.val_timestamp) as seqnum
      FROM T1 t1 JOIN
           T2 t2
           ON t2.indicator >= t1.indicator
     ) t
WHERE seqnum = 1;

用你正在使用的数据库标记你的问题。我正在使用我公司自己的SQL引擎/数据库执行查询,但是SQL语法应该是相当标准的,就像BigQuery一样,Google可以使用SQL。谢谢Gordon!我会试试看