您必須有一些可用於定義訂單的字段。
在下面的例子,我認爲它是id
場
下面應該做你期望
#standardSQL
SELECT
CONCAT('(',STRING_AGG(field1 ORDER BY id), ')') AS field1,
CONCAT('(',STRING_AGG(CAST(field2 AS STRING) ORDER BY id), ')') AS field2
FROM (
SELECT
id, field1, field2,
COUNTIF(field2 = 100) OVER (ORDER BY id) AS grp
FROM yourTable
) t
GROUP BY grp
ORDER BY MIN(id)
您可以測試/與嘗試下面的僞數據從你的問題是什麼
#standardSQL
WITH yourTable AS (
SELECT 1 AS id, 'val1' AS field1, 100 AS field2 UNION ALL
SELECT 2 AS id, 'val2' AS field1, 110 AS field2 UNION ALL
SELECT 3 AS id, 'val3' AS field1, 100 AS field2 UNION ALL
SELECT 4 AS id, 'val4' AS field1, 110 AS field2 UNION ALL
SELECT 5 AS id, 'val3' AS field1, 130 AS field2 UNION ALL
SELECT 6 AS id, 'val3' AS field1, 140 AS field2 UNION ALL
SELECT 7 AS id, 'val1' AS field1, 100 AS field2
)
SELECT
CONCAT('(',STRING_AGG(field1 ORDER BY id), ')') AS field1,
CONCAT('(',STRING_AGG(CAST(field2 AS STRING) ORDER BY id), ')') AS field2
FROM (
SELECT
id, field1, field2,
COUNTIF(field2 = 100) OVER (ORDER BY id) AS grp
FROM yourTable
)
GROUP BY grp
ORDER BY MIN(id)
輸出爲
field1 field2
------ ------
(val1,val2) (100,110)
(val3,val4,val3,val3) (100,110,130,140)
(val1) (100)
想知道如果這是可能的(不使用訂單欄)?
如果你真的有隻在您的表的兩個領域 - 你最有可能的運氣了,需要重新審視與附加字段填入本表的邏輯被用於訂購(作爲時間軸)
作爲一個完全最後的手段 - 你可以嘗試例子飛產生這樣欄下方 - 但請理解也絕對在得到命令,你希望
#standardSQL
WITH yourTable AS (
SELECT 'val1' AS field1, 100 AS field2 UNION ALL
SELECT 'val2' AS field1, 110 AS field2 UNION ALL
SELECT 'val3' AS field1, 100 AS field2 UNION ALL
SELECT 'val4' AS field1, 110 AS field2 UNION ALL
SELECT 'val3' AS field1, 130 AS field2 UNION ALL
SELECT 'val3' AS field1, 140 AS field2 UNION ALL
SELECT 'val1' AS field1, 100 AS field2
),
tempTable AS (
SELECT field1, field2, ROW_NUMBER() OVER() AS id
FROM yourTable
)
SELECT
CONCAT('(',STRING_AGG(field1 ORDER BY id), ')') AS field1,
CONCAT('(',STRING_AGG(CAST(field2 AS STRING) ORDER BY id), ')') AS field2
FROM (
SELECT
id, field1, field2,
COUNTIF(field2 = 100) OVER (ORDER BY id) AS grp
FROM tempTable
)
GROUP BY grp
ORDER BY MIN(id)
輸出是一樣不能保證 - 但是 - 不能保證在裏面!!!
field1 field2
------ ------
(val1,val2) (100,110)
(val3,val4,val3,val3) (100,110,130,140)
(val1) (100)
定義連續的 – GurV
(1)我刪除了MySQL標籤。這似乎比BQ更偶然。 (2)SQL表格表示*無序*集合。您需要一個指定排序的列。 –