Sql 如何在大查询的case语句中使用行值?
我需要在case语句的帮助下为我的列定义值。但是这个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
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。然后
状态
表实际上与查询没有关联。