在Salesforce SQLSOQL中查询包含JOINS的子查询

问题描述

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

请原谅我正在发布整个代码。谁知道,但这可能会有所帮助。如您所见,它是包含联接的子查询查询。我正在使用Salesforce sql。运行代码时,出现此错误

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

我在做什么错?除了是一个菜鸟;-)

解决方法

您在子查询中不需要count列:

SELECT Email_address,COUNT(*)
FROM (SELECT cust.Email_address,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
     ) e
GROUP BY Email_Address