簡體   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