我正在使用Presto。我想使用不互斥的不同条件为一行分配多个"标记"。
例如,假设有一个表有4列:
| food | color | type | on_sale |
|------------+--------+-------------+---------|
| apple | red | fruit | TRUE |
| banana | yellow | fruit | FALSE |
| cornbread | yellow | baked goods | TRUE |
| apple pie | brown | baked goods | TRUE |
我想用我定义的标签来标记每种食物,比如red food
、red food on sale
、yellow baked goods
、yellow food on_sale
ONLY。在本例中,apple匹配两个标记:red food
和red food on sale
。
我不能使用CASE
(如下(,因为只有当我真的想把它标记为两者时,我才会得到"红色食物"。
CASE
WHEN color = 'red' THEN 'red food'
WHEN color = 'red' AND `on_sale` = TRUE THEN 'red food on sale'
(and so on)
理想情况下,我希望返回一个数组,该数组可以捕获多个"标记"或重复列,每个标记一行,但我不知道如何做到这一点。有什么想法吗?
提前感谢!
您可以使用字符串串联:
LTRIM(CASE WHEN color = 'red' THEN ' red food' ELSE '' END ||
CASE WHEN `on_sale` = TRUE THEN ' on sale' ELSE '' END
END)