BigQuery从dbc.tables中选择row_number()(按tablename排序)

时间:2018-03-14 20:07:28

标签: sql google-bigquery translation teradata row-number

我正在翻译一个非常大的CTE Teradata查询,并且卡在这个跟随的部分,这是它自己的子查询,它正在交叉连接到一个非常大的子查询。

如何将此查询翻译成Bigquery?

(select row_number() over (order by tablename) subsequent_month from dbc.tables qualify row_number() over (order by tablename) <= 24)

思想家伙?

3 个答案:

答案 0 :(得分:2)

以下是BigQuery Standard SQL

   
#standardSQL
SELECT subsequent_month FROM (
  SELECT ROW_NUMBER() OVER (ORDER BY tablename) subsequent_month 
  FROM dbc.tables 
) WHERE subsequent_month <= 24

答案 1 :(得分:0)

您需要qualify的子查询:

from (select row_number() over (order by tablename) as subsequent_month
      from dbc.tables
     ) t
where subsequent_month < 24;

在Teradata中,qualify是一个适用于窗口函数的“where”子句。它类似于having,它适用于聚合函数。

答案 2 :(得分:0)

这只返回24行,连续数字从1到24。

因此,将其转换为针对BigQuery中任何表的类似查询,或使用现有的数字表。