[英]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.