'Tagging' 使用多个条件的记录

'Tagging' a record using multiple criteria

我正在使用 Presto。我想使用不互斥的不同标准分配具有多个 'tags' 的行。

例如,假设有一个包含 4 列的 table:

|  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。在示例中,apple 匹配两个标签:red foodred food on sale.

我不能使用 CASE(如下所示),因为我只会在我真正想要将其标记为两者时返回 'red food'。

CASE 
   WHEN color = 'red' THEN 'red food'
   WHEN color = 'red' AND `on_sale` = TRUE THEN 'red food on sale'
   (and so on)

理想情况下,我想 return 一个可以捕获超过 1 个 'tag' 的数组或每个标签一行的重复列,但我不知道该怎么做。有什么想法吗?

提前致谢!

您可以使用字符串连接:

LTRIM(CASE WHEN color = 'red' THEN ' red food' ELSE '' END ||
      CASE WHEN `on_sale` = TRUE THEN ' on sale' ELSE '' END
      END)