为什么我会收到 '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
我收到关于 '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