2017-06-20 2 views
1

einer Reihe meiner Daten wie diese für eine Art und WeiseWie bedingt eine Spalte aggregieren basierend auf einem anderen

[someId, someBool, someInt]

Ich suche someInt zu aggregieren sieht (sie in einem array speziell setzen).

ich eine GROUP BY-Klausel Gruppe der someId Feld verwenden, dann kann ich aggregieren die alle someIntARRAY_AGG verwenden, aber ich möchte nur die Zeilen schließen, wo someBool=TRUE. Wie geht man das richtig an?

PS: Es könnte von Bedeutung sein zu beachten, was ich mehrere booleans wie someBool bekam und Ausgang zu einem anderen Array möchte jedes Mal

Antwort

3

Sie ARRAY_AGG mit IGNORE NULLS verwenden können, zum Beispiel:

ARRAY_AGG(IF(someBool IS NOT TRUE, NULL, someId) IGNORE NULLS) 

Dies wird nur die IDs aggregieren, für die someBool wahr ist. Wenn Sie mehrere boolesche Spalten haben, die Sie in der Bedingung verwenden möchten, können Sie AND zusammen verwenden oder eine CASE WHEN ... oder eine andere Art von Bedingung verwenden, die NULL erzeugt, um einen Wert auszuschließen.

+0

Danke das hat es perfekt gemacht! –

Verwandte Themen