尝试使用BigQuery的标准SQL
#standardSQL
WITH segments AS (
SELECT ProductID, MAX(ProdSegID) AS ProdSegIDCalc
FROM yourTable
GROUP BY ProductID
)
SELECT t.ProductID, t.ProdSegID, s.ProdSegIDCalc
FROM yourTable AS t
JOIN segments AS s
ON t.ProductID = s.ProductID
ORDER BY ProductID
您可以测试/使用其虚拟数据从你的问题发挥:
#standardSQL
WITH yourTable AS (
SELECT 1 AS ProductID, 1 AS ProdSegID UNION ALL
SELECT 1, NULL UNION ALL
SELECT 1, NULL UNION ALL
SELECT 2, NULL UNION ALL
SELECT 2, 5 UNION ALL
SELECT 2, 5 UNION ALL
SELECT 3, NULL UNION ALL
SELECT 3, NULL UNION ALL
SELECT 3, 18
),
segments AS (
SELECT ProductID, MAX(ProdSegID) AS ProdSegIDCalc
FROM yourTable
GROUP BY ProductID
)
SELECT t.ProductID, t.ProdSegID, s.ProdSegIDCalc
FROM yourTable AS t
JOIN segments AS s
ON t.ProductID = s.ProductID
ORDER BY ProductID
注:个人我 - 我会去使用Analytic Functions
,正如Gordon的答案中所建议的那样。但想给你更多的选择 - 取决于你的实际使用情况,它可能或多或少有用
谢谢大家的帮助。戈登的解决方案为我工作得很好。 – Albertok
亲切的问候 Albrecht – Albertok