Below für SQL BigQuery Norm ist
#standardSQL
SELECT
column1,
MAX(IF(condition = 1, column2, '')) column2,
SUM(value)sumOfValue
FROM `project.dataset.table`
GROUP BY column1
Sie testen können/mit ihm spielen Beispiel aus Ihrer Frage verwenden, wie unten
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 column1, 'ABC' column2, 1 condition, 1 value UNION ALL
SELECT 1, 'строка 2', 0, 1 UNION ALL
SELECT 1, 'строка 3', 0, 1 UNION ALL
SELECT 1, 'строка 4', 0, 1 UNION ALL
SELECT 1, 'строка 5', 0, 1 UNION ALL
SELECT 1, 'строка 6', 0, 1 UNION ALL
SELECT 2, 'BCD', 1, 1 UNION ALL
SELECT 2, 'строка 2', 0, 1 UNION ALL
SELECT 2, 'строка 3', 0, 1
)
SELECT
column1,
MAX(IF(condition = 1, column2, '')) column2,
SUM(value)sumOfValue
FROM `project.dataset.table`
GROUP BY column1
Das Ergebnis ist wie erwartet (ich glaube)
column1 column2 sumOfValue
1 ABC 6
2 BCD 3
Die obige Lösung setzt voraus, dass Sie nur eine Zeile mit Bedingung = 1 pro Gruppe von Spalte1 haben. Wenn dies nicht der Fall ist, erhalten Sie oben nur einen (MAX) Wert von Spalte2. Wenn Sie alle diese Werte zu gruppieren müssen - siehe Option unter
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 column1, 'ABC' column2, 1 condition, 1 value UNION ALL
SELECT 1, 'строка 2', 0, 1 UNION ALL
SELECT 1, 'строка 3', 1, 1 UNION ALL
SELECT 1, 'строка 4', 0, 1 UNION ALL
SELECT 1, 'строка 5', 1, 1 UNION ALL
SELECT 1, 'строка 6', 0, 1 UNION ALL
SELECT 2, 'BCD', 1, 1 UNION ALL
SELECT 2, 'строка 2', 0, 1 UNION ALL
SELECT 2, 'строка 3', 0, 1
)
SELECT
column1,
REGEXP_REPLACE(STRING_AGG(IF(condition = 1, CONCAT(column2, ','), ''),''), r',$', '') column2,
SUM(value)sumOfValue
FROM `project.dataset.table`
GROUP BY column1
In diesem Fall wird ein Ergebnis führen,
column1 column2 sumOfValue
1 ABC,строка 3,строка 5 6
2 BCD 3