使用多个条件'Tagging'记录



我正在使用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 foodred food on saleyellow baked goodsyellow food on_sale ONLY。在本例中,apple匹配两个标记:red foodred 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)

相关内容

  • 没有找到相关文章

最新更新