我在 BigQuery 中有一个表,我希望能够根据某种类型的映射文件进行分组,例如,如果我有以下内容
产品代码 | 国家 | 销售 |
---|---|---|
AA1 | 美国 | 5 |
AA2 | 美国 | 10 |
AA1 | 英国 | 15 |
BB1 | 美国 | 20 |
BB2 | 美国 | 25 |
BB2 | 英国 | 25 |
以及以下映射
[AA1, AA2] > AA1
[BB1, BB2] > BB1
我理想地希望获得以下内容:
产品代码 | 国家 | 销售 |
---|---|---|
AA1 | 美国 | 15 |
AA1 | 英国 | 15 |
BB1 | 美国 | 45 |
BB1 | 英国 | 25 |
显然除了更大的规模之外。我想知道是否有一种方法可以纯粹用 SQL 来做到这一点
您可以使用
CASE
表达式进行聚合,该表达式执行映射:
SELECT
CASE WHEN ProductCode IN ('AA1', 'AA2') THEN 'AA1'
WHEN ProductCode IN ('BB1', 'BB2') THEN 'BB1' END AS ProductCode,
Country,
SUM(Sales) AS Sales
FROM yourTable
GROUP BY 1, 2;