我的一行数据看起来像这样
[someId, someBool, someInt]
我正在寻找一种聚合someInt的方法(专门将它们放在array
中)。
我使用GROUP BY子句按someId
字段进行分组,然后我可以使用someInt
汇总所有ARRAY_AGG
,但我只想包含someBool=TRUE
行。如何以正确的方式解决这个问题?
PS:可能有必要注意我有几个布尔值,如someBool
,并希望每次输出到不同的数组
答案 0 :(得分:3)
您可以将ARRAY_AGG
与IGNORE NULLS
一起使用,例如:
ARRAY_AGG(IF(someBool IS NOT TRUE, NULL, someId) IGNORE NULLS)
这只会聚合someBool
为真的ID。如果您要在条件中使用多个布尔列,则可以AND
将它们放在一起或使用CASE WHEN ...
或您想要生成NULL
的任何其他类型的条件,以便排除一个值。