Sql 如何在大查询的case语句中使用行值?

Sql 如何在大查询的case语句中使用行值?,sql,google-bigquery,Sql,Google Bigquery,我需要在case语句的帮助下为我的列定义值。但是这个case语句应该从一个动态的表中获取值 例如,下面的查询 SELECT id, CASE WHEN REGEXP_CONTAINS(lower(state), 'tamil') THEN 'tamil' WHEN REGEXP_CONTAINS(lower(state), 'andhra') THEN 'telugu' ELSE 'others' END AS language FROM tab

我需要在case语句的帮助下为我的列定义值。但是这个case语句应该从一个动态的表中获取值

例如,下面的查询

SELECT 
    id,
    CASE 
    WHEN REGEXP_CONTAINS(lower(state),  'tamil') THEN 'tamil'
    WHEN REGEXP_CONTAINS(lower(state),  'andhra') THEN 'telugu' ELSE 'others' END AS language
    FROM 
table_name
将输出作为

id    language
001   tamil 
002   telugu
003   tamil 
004   others
但是如果我在一个单独的源中有状态信息,并且也是动态的(状态可以被添加和删除),如下所示

table_name : state_table

SCHEMA:
state   STRING

PREVIEW:
state
tamil nadu
andhra pradesh
kerala

在这种情况下,如何复制与上面相同的输出。有人能帮我一下吗。

假设
状态表
真的有语言,你可以使用
join

SELECT t.*, s.language
FROM table_name t JOIN
     state_table s
     ON REGEXP_CONTAINS(LOWER(t.state),  s.state) 

语言从何而来?@GordonLinoff language是一个基于列“state”中的值的派生列。不,“state_table”除了状态名称之外没有任何其他信息。这就是为什么我试着处理这个案子。(language是基于列“state”中的值派生的列)@thivagaromorthy。然后
状态
表实际上与查询没有关联。