基于 select 上的组合字段按查询分组
Group by query base on a composed field on the select
所以,我有这些文件:
[
{ defaultName: "product X", brand: { name: "brand 00", id: "brand00-00" }, externalSpec: "spec00" },
{ defaultName: "product Y", brand: null, externalSpec: "spec01" },
{ defaultName: "product LL", brand: { name: "brand 01", id: "brand00-01" }, externalSpec: "spec00" },
{ defaultName: "product X", brand: { name: "brand 00", id: "brand00-00" }, externalSpec: "spec01" },
]
我在此查询中使用分组依据,它在文档中的现有字段中工作正常:
SELECT ARRAY_AGG(p) FROM `BucketXXX` AS p
WHERE p.type = 'product'
AND p.deleted = false
GROUP BY p.defaultName
现在我想按查询使用我的组,但在 select 子句上使用连接字段,我需要它来检查产品是否相等,例如:
SELECT p.defaultName || p.brand.id || p.externalSpec AS custom_key, ARRAY_AGG(p) FROM `BucketXXX` AS p
WHERE p.type = 'product'
AND p.deleted = false
GROUP BY custom_key
但运气不好,目前在 AS 附近出现错误 3000 语法错误,还要记住品牌可能为空,如果为空我想添加一个空字符串以继续使用 externalSpec 字段,
感谢您的帮助,
谢谢
投影别名只能在 ORDER BY 中使用。由于评估顺序(FROM、JOIN、LET、WHERE、GROUP BY、LETTING、PROJECTION、ORDER BY)。
支持 CB 6.5 或更高版本 GROUP BY 别名
SELECT custom_key, ARRAY_AGG(p) FROM `BucketXXX` AS p
WHERE p.type = 'product'
AND p.deleted = false
GROUP BY p.defaultName || p.brand.id || p.externalSpec AS custom_key;
或
SELECT custom_key, ARRAY_AGG(p) FROM `BucketXXX` AS p
LET custom_key = p.defaultName || p.brand.id || p.externalSpec
WHERE p.type = 'product'
AND p.deleted = false
GROUP BY custom_key;
您的品牌为空,如果需要,请使用 CONCAT(p.defaultName, IFMISSINGORNULL(p.brand.id,""), p.externalSpec)
所以,我有这些文件:
[
{ defaultName: "product X", brand: { name: "brand 00", id: "brand00-00" }, externalSpec: "spec00" },
{ defaultName: "product Y", brand: null, externalSpec: "spec01" },
{ defaultName: "product LL", brand: { name: "brand 01", id: "brand00-01" }, externalSpec: "spec00" },
{ defaultName: "product X", brand: { name: "brand 00", id: "brand00-00" }, externalSpec: "spec01" },
]
我在此查询中使用分组依据,它在文档中的现有字段中工作正常:
SELECT ARRAY_AGG(p) FROM `BucketXXX` AS p
WHERE p.type = 'product'
AND p.deleted = false
GROUP BY p.defaultName
现在我想按查询使用我的组,但在 select 子句上使用连接字段,我需要它来检查产品是否相等,例如:
SELECT p.defaultName || p.brand.id || p.externalSpec AS custom_key, ARRAY_AGG(p) FROM `BucketXXX` AS p
WHERE p.type = 'product'
AND p.deleted = false
GROUP BY custom_key
但运气不好,目前在 AS 附近出现错误 3000 语法错误,还要记住品牌可能为空,如果为空我想添加一个空字符串以继续使用 externalSpec 字段,
感谢您的帮助, 谢谢
投影别名只能在 ORDER BY 中使用。由于评估顺序(FROM、JOIN、LET、WHERE、GROUP BY、LETTING、PROJECTION、ORDER BY)。
支持 CB 6.5 或更高版本 GROUP BY 别名
SELECT custom_key, ARRAY_AGG(p) FROM `BucketXXX` AS p
WHERE p.type = 'product'
AND p.deleted = false
GROUP BY p.defaultName || p.brand.id || p.externalSpec AS custom_key;
或
SELECT custom_key, ARRAY_AGG(p) FROM `BucketXXX` AS p
LET custom_key = p.defaultName || p.brand.id || p.externalSpec
WHERE p.type = 'product'
AND p.deleted = false
GROUP BY custom_key;
您的品牌为空,如果需要,请使用 CONCAT(p.defaultName, IFMISSINGORNULL(p.brand.id,""), p.externalSpec)