为什么我会收到 'invalid column' 错误?

why am I getting an 'invalid column' error?

我收到关于 'ordervalue' 的 'invalid column' 错误。使用 HAVING 语句而不是 WHERE 不能修复它,删除“>10000”过滤器可以使代码 运行 正常。

我错过了什么?

谢谢

select
    customers.customerid,
    customers.companyname,
    orderdetails.orderid,
    ordervalue = orderdetails.quantity * OrderDetails.UnitPrice
from
    customers
join
    orders
on
    customers.customerid = orders.customerid
join
    orderdetails
on
    orderdetails.orderid = orders.orderid
where
    orders.orderdate > '20160101' and
    orders.orderdate < '20161231' and
    ordervalue > 10000
order by
    ordervalue desc

问题出在 WHERE 子句,它试图引用别名 ordervalue。这在标准 SQL 中是不允许的。您应该重复表达式:

where
    orders.orderdate > '20160101' and
    orders.orderdate < '20161231' and
    orderdetails.quantity * OrderDetails.UnitPrice > 10000