繁体   English   中英

Bigquery Join 语法错误与适用于标准 SQL 的示例代码

[英]Bigquery Join syntax errors with example code that works in standard SQL

我正在使用大查询并希望找到 emailAddress 的第一个订单的 toalAfterRefund 值。 这两个 select 语句都作为单独的语句工作,但我在加入它们时遇到了麻烦。 我得到错误

Syntax error: Expected end of input but got keyword JOIN at [1:1]

我无法理解在 bigquery 中将这些语句作为这些语句连接在一起需要做什么。 我正在尝试获取 emailAddresses 第一个 orderDate 的 toalAfterRefund 值。

SELECT  H.emailAddress, H.orderId, H.orderDate, H.totalAfterRefund
           FROM  `nexgen-362616.orders.allOrders` AS H
          WHERE   totalAfterRefund>0 
          
JOIN
          (SELECT emailAddress, MIN(OrderDate) AS first_order
          FROM  `nexgen-362616.orders.allOrders` as X
          WHERE   totalAfterRefund>0 
          GROUP BY emailAddress) 
          ON H.emailAddress = X.emailAddress AND H.orderDate = X.first_order
WITH table_emailAddress as
(SELECT emailAddress, MIN(OrderDate) AS first_order
          FROM  `nexgen-362616.orders.allOrders` as X
          WHERE   totalAfterRefund>0 
          GROUP BY emailAddress) 

SELECT  H.emailAddress, H.orderId, H.orderDate, H.totalAfterRefund
           FROM  `nexgen-362616.orders.allOrders` AS H
       
          
JOIN table_emailAddress  as X
     
          ON H.emailAddress = X.emailAddress AND H.orderDate = X.first_order

   WHERE   totalAfterRefund>0 

您在我们的代码中有多个问题,

  1. WHERE 子句总是在最后
  2. 每个子查询必须有自己的名字

所以

SELECT  H.emailAddress, H.orderId, H.orderDate, H.totalAfterRefund, X.first_order
           FROM  `nexgen-362616.orders.allOrders` AS H          
JOIN
          (SELECT emailAddress, MIN(OrderDate) AS first_order
          FROM  `nexgen-362616.orders.allOrders`
          WHERE   totalAfterRefund>0 
          GROUP BY emailAddress)  as X
          ON H.emailAddress = X.emailAddress AND H.orderDate = X.first_order
WHERE   totalAfterRefund>0 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM