【发布时间】:2015-02-14 16:34:01
【问题描述】:
我正在尝试在 where 子句中使用计算列。
我已经尝试了从 CROSS APPLY 到子查询选择的所有方法,但它没有给我任何我需要的东西。
到目前为止我的查询:
SELECT p.Code, c.AccountNumber, Sales = (SUM(p.UnitPrice) * SUM(od.QtyShipped)) FROM [dbo].Customer c
LEFT JOIN [dbo].OrderHeader oh ON oh.CustomerId = c.Id
LEFT JOIN [dbo].OrderDetail od ON od.OrderHeaderId = oh.Id
LEFT JOIN [dbo].Product p ON p.Id = od.ProductId
WHERE Sales > 100
GROUP BY p.Code, c.AccountNumber, Sales
这不起作用,因为“销售”是无效列
【问题讨论】:
-
你能用
HAVING (SUM(p.UnitPrice) * SUM(od.QtyShipped)) > 100代替WHERE吗? (见w3schools.com/sql/sql_having.asp)
标签: sql-server tsql where-clause calculated-columns