所以,我有这些文件:
[
{ 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语法错误,还请记住,品牌可能为null,如果要为null,则我想添加一个空字符串以继续externalSpec字段,
感谢您的帮助, 谢谢
答案 0 :(得分:2)
投影别名只能在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;
OR
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)