左连接但使用右表上的字段进行分组

问题描述 投票:0回答:1

我有两张表,第一张有详细的订单信息。

  • A
    Restaurants id, brand id, date, order id, order value (usd)
  • B
    Restaurants id, restaurants name, brand name

我想创建一个表格,显示按餐厅名称分组的每月收入。

示例:

       December  November  October
Res 1
Res 2
Res 3

我的 SQL 查询:

SELECT 
  A.restaurant_id,
  SUM(CASE
    WHEN A.date >= '2024_12_01'
      THEN A.order_value
    ELSE 0
  END) AS December_Revenue,
FROM A 

LEFT JOIN B ON A.restaurant_id = B.restaurants_id
  
GROUP BY B.restaurant_name
ORDER BY December_revenue DESC

我的 SQL 查询面临此错误:

列“A.restaurant_id”必须出现在 GROUP BY 子句中或使用 在聚合函数中

如何解决?

sql mysql aggregate
1个回答
0
投票

当您使用聚合函数时,您必须在 GROUP BY 子句中列出 SELECT 中的每一列,因此您必须在 GROUP BY 中列出 A.restaurant_id 因为您在 SELECT 中使用此列。

我认为你不必使用B.restaurant_name,A.restaurant_id就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.