查询Salesforce SQL(SOQL)中包含联接的子查询

查询Salesforce SQL(SOQL)中包含联接的子查询,sql,soql,Sql,Soql,请原谅我发布了全部代码。但不知何故,这可能会有所帮助,谁知道呢。正如您所看到的,它是一个关于包含联接的子查询的查询。我正在使用Salesforce SQL。运行代码时,出现以下错误: 保存查询字段时出错。关键字“GROUP”附近的语法不正确 我做错了什么?除了做一个傻瓜- 子查询中不需要count列: SELECT Email_address, COUNT(Order_date) FROM (SELECT cust.Email_address, COUNT

请原谅我发布了全部代码。但不知何故,这可能会有所帮助,谁知道呢。正如您所看到的,它是一个关于包含联接的子查询的查询。我正在使用Salesforce SQL。运行代码时,出现以下错误:

保存查询字段时出错。关键字“GROUP”附近的语法不正确


我做错了什么?除了做一个傻瓜-

子查询中不需要count列:

SELECT 
    Email_address, COUNT(Order_date)
FROM 
    (SELECT 
         cust.Email_address, COUNT(ol.Variant_name), ord.Order_date
     FROM 
         DMW_Order_Line_v3 ol
     JOIN 
         DMW_Order_v3 ord ON ol.Unique_transaction_identifier = ord.Unique_transaction_identifier
                          AND ol.Brand_country = ord.Brand_country
     JOIN 
         DMW_Customer_v3 cust ON ord.Email_address = cust.Email_address
                              AND ord.Brand_country = cust.Brand_country
     WHERE 
         ord.Brand_country = 'kiehls-emea_CZ'
         AND cust.Address_country = 'CZ'
         AND cust.Optin_email != 'False'
         AND ol.Line_status = 'SHIPPED'
         AND ol.Variant_name = 'Sample'
     GROUP BY 
         cust.Email_address, ord.Order_date
     HAVING 
         COUNT(ol.Variant_name) >= 4)
GROUP BY 
    Email_address

子查询中不需要count列:

SELECT 
    Email_address, COUNT(Order_date)
FROM 
    (SELECT 
         cust.Email_address, COUNT(ol.Variant_name), ord.Order_date
     FROM 
         DMW_Order_Line_v3 ol
     JOIN 
         DMW_Order_v3 ord ON ol.Unique_transaction_identifier = ord.Unique_transaction_identifier
                          AND ol.Brand_country = ord.Brand_country
     JOIN 
         DMW_Customer_v3 cust ON ord.Email_address = cust.Email_address
                              AND ord.Brand_country = cust.Brand_country
     WHERE 
         ord.Brand_country = 'kiehls-emea_CZ'
         AND cust.Address_country = 'CZ'
         AND cust.Optin_email != 'False'
         AND ol.Line_status = 'SHIPPED'
         AND ol.Variant_name = 'Sample'
     GROUP BY 
         cust.Email_address, ord.Order_date
     HAVING 
         COUNT(ol.Variant_name) >= 4)
GROUP BY 
    Email_address

您可能只需要在子查询之后使用表别名。让COUNTol.Variant\u name>=4T。这是我的第一个想法。我在子查询后添加了一些随机名称,如“abc”,以选择语句和按语句分组,但随后显示:保存查询字段时出错。“abc”的第2列未指定列名。您可能只需要在子查询后使用表别名。让COUNTol.Variant\u name>=4T。这是我的第一个想法。我在子查询后添加了一些随机名称,如“abc”,以选择语句和按语句分组,但随后显示:保存查询字段时出错。“abc”的第2列没有指定列名。哦,我的天哪!这管用!谢谢!:-您是否能够解释为什么从子查询中删除列会有所帮助?正如我所见,我真的只是个傻瓜…@Amberjack。正如错误所说,它没有名称。您需要为它命名或删除它。因为它没有被使用,移除它是有意义的。我明白了,错误涉及子查询。好吧,非常感谢你!现在我只需要学习如何重命名列,因为SOQL有点奇怪…哦,我的上帝!这管用!谢谢!:-您是否能够解释为什么从子查询中删除列会有所帮助?正如我所见,我真的只是个傻瓜…@Amberjack。正如错误所说,它没有名称。您需要为它命名或删除它。因为它没有被使用,移除它是有意义的。我明白了,错误涉及子查询。好吧,非常感谢你!现在我只需要学习如何重命名这些列,因为SOQL有点奇怪。。。