我正在尝试使用拥有一个组,但我得到了这个错误:
选择列表表达式引用sales_order.SalesOrderDateTime,它既不分组也不聚合在2:8
该字段位于SELECT列表和GROUP BY中,但它是CAST的一部分,因为我不想要日期时间的时间戳部分。它不需要在另一个表上使用CAST,而该表的格式已经是YYYY。它也应该在这里起作用。有办法绕道吗?
我试过使用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是可行的,但如果可能的话,我想避免。
发布于 2022-08-31 11:40:50
你可以试试这个:
group by 1,2,3而不是使用完整的表达式。
在复杂的查询中,我经常会遇到同样的问题。我认为这是一个bug,可以在这里报告,https://issuetracker.google.com/
https://stackoverflow.com/questions/73546589
复制相似问题