我有一个数据列表,比方说冰淇淋口味和糖果(A列),我希望根据A列中的特定口味创建B列:

Column A Column B
chocolate ice-cream chocolate
chocolate cake chocolate
strawberry pie strawberry
fruit cake fruit
strawberry cookie strawberry
fruit cake fruit

老实说,我甚至不确定从哪里开始,因为在GSheet中使用筛选器对我来说会更容易,但我需要为future 的相同任务自动执行这个过程.

推荐答案

假设我们有一个可能的糖果种类列表[冰淇淋、蛋糕、馅饼、cookies ],A列包含糖果和调味品的单词,那么您可以使用SPLIT()ARRAY_EXCEPT()ARRAY_INTERSECT()ARRAY_JOIN()函数编写查询,如下所示:

WITH tableA_w_words AS (
    SELECT
    columnA,
    ARRAY_INTERSECT(SPLIT(columnA,' '), ARRAY('ice-cream', 'cake', 'pie', 'cookie')) as sweet_words,
    ARRAY_EXCEPT(SPLIT(columnA,' '), ARRAY('ice-cream', 'cake', 'pie', 'cookie')) as non_sweet_words
    FROM
    tableA
)
SELECT
   columnA,
   CASE 
       WHEN size(sweet_words)> 0 AND SIZE(non_sweet_words)>0 
       THEN array_join(non_sweet_words,' ') 
       ELSE NULL 
   END AS flavour
FROM
   tableA_w_words

Sql相关问答推荐

如何根据SQL中的列条件获取下一个时间戳?

PG SQL中按条件聚合值

具有2个共享列的两个表的Amazon RSQL合并

如何将资源密集型自连接转换为更快的查询?

分组多输出访问查询问题

从自定义日期和时间开始,每月具有给定状态的公司数量

如何实现同一列的递归计算?

如何根据行状态设置正确的标志

SQL Athena/prest判断值是否在嵌套的json数组中

将伪数据插入Postgres表

在Postgres,什么是;.USSTZ;在';YYYY-MM-DD;T;HH24:MI:SS.USSTZ';?

SQL Server 查询 WHERE LIKE

两个具有 NULL 值的表达式结果之间的差异

正则表达式:停在第一个匹配的其中一个字符位置上

for each 客户查找每个类别的最新评分

BigQuery Pivot 遗漏行

如何更改 duckdb R 中的数据约束

根据条件列出不同的值

如何在一个存储过程中创建全局临时表,并在另一个存储过程中使用它

PostgreSQL 中的递归树查询