select year(订购日期) as 年度, sum(dm.单价*dm.数量*(case when dm.折扣 = 0 then 1 else dm.折扣 end)) as 销售额 from 订单 d join 订单明细 dm on dm.订单ID = d.订单ID order by 年度;错在哪
时间: 2023-12-10 18:38:19 浏览: 137
sql学习之CASE WHEN THEN ELSE END的用法
这条 SQL 语句有一个错误:在 SELECT 子句中,使用了表达式 `sum(dm.单价*dm.数量*(case when dm.折扣 = 0 then 1 else dm.折扣 end))` 计算销售额,但是没有在 GROUP BY 子句中指定年度,因此会出现语法错误。
正确的 SQL 语句应该是:
```
SELECT YEAR(订购日期) AS 年度, SUM(dm.单价 * dm.数量 * (CASE WHEN dm.折扣 = 0 THEN 1 ELSE dm.折扣 END)) AS 销售额
FROM 订单 d
JOIN 订单明细 dm ON dm.订单ID = d.订单ID
GROUP BY YEAR(订购日期)
ORDER BY 年度;
```
这样就会按照年度分组计算销售额并且按照年度进行排序。
阅读全文