繁体   English   中英

BigQuery:使用 CAST、GROUP BY 和 HAVING

[英]BigQuery: Use CAST, GROUP BY, and HAVING

我试图在 GROUP BY 之后使用 HAVING 但我收到此错误:

SELECT 列表表达式引用 sales_order.SalesOrderDateTime 既不分组也不聚合在 [2:8]

该字段位于 SELECT 列表和 GROUP BY 中,但它是 CAST 的一部分,因为我不想要日期时间的时间戳部分。 它可以在格式已经为 YYYY-MM-DD 的另一个表上不使用 CAST。 它也应该在这里工作。 有没有解决的办法?

我尝试使用STRING FORMAT 'YYYY-MM-DD'但这也不起作用。

SELECT 
  CAST(sales_order.SalesOrderDateTime AS DATE) as created_at,
  sales_order.SalesOrderNo as order_id,
  sales_order.SellToEmail as customer_email,
  sum(sales_order_item.OriginalPrice)*100 as total_amount_cents,
  max(sales_order.TotalDiscountAmount)*100 as discount_amount_cents
FROM `my_dw.external_datamart_1.SalesOrder_view` 
WHERE CAST(sales_order.SalesOrderDateTime AS DATE) >= '2022-01-01'
GROUP BY CAST(sales_order.SalesOrderDateTime AS DATE), sales_order.SalesOrderNo, sales_order.SellToEmail
-- This does not work with CAST
HAVING sum(sales_order_item.OriginalPrice) > max(sales_order.TotalDiscountAmount)
LIMIT 1000
)

CTE 当然可以,但如果可能的话,我想避免这种情况。

你可以试试这个:

group by 1,2,3

而不是使用完整的表达式。

在我的复杂查询中,我不时面临同样的问题。 我认为这是一个错误,可以在这里报告https://issuetracker.google.com/

暂无
暂无

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

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