繁体   English   中英

列名称'FinalTotal'无效

[英]Invalid column name 'FinalTotal'

SELECT 
    o.OrderID, ProductName, OrderDate, ItemPrice, TaxAmount, 
    DiscountAmount, DiscountAmount - ItemPrice AS FinalTotal, 
    Quantity, ShipDate,FinalTotal * Quantity AS ItemTotal
FROM
    Orders AS o 
JOIN 
    OrderItems AS oi ON o.OrderID = oi.OrderID
JOIN 
    Products AS p ON oi.ProductID = p.ProductID;

这是我的代码,它一直说无效的列名'FinalTotal'。 我在这做错了什么?

您不能在相同的查询级别上使用列别名。

在ItemTotal的计算中使用FinalToal的完整表达式

SELECT o.OrderID, ProductName, OrderDate, ItemPrice, TaxAmount, DiscountAmount,
       DiscountAmount - ItemPrice AS FinalTotal, 
       Quantity, ShipDate,
       (DiscountAmount - ItemPrice) * Quantity AS ItemTotal
FROM Orders AS o JOIN OrderItems AS oi
    ON o.OrderID = oi.OrderID
 JOIN Products AS p
    ON oi.ProductID = p.ProductID;

或者是使用派生查询或CTE

在SQL Server中执行此操作的一个技巧是使用apply

SELECT o.OrderID, ProductName, OrderDate, ItemPrice, TaxAmount, 
       DiscountAmount, x.FinalTotal, Quantity, ShipDate,
       x.FinalTotal * Quantity AS ItemTotal
FROM Orders o JOIN
     OrderItems AS oi
     ON o.OrderID = oi.OrderID JOIN
     Products AS p
     ON oi.ProductID = p.ProductID CROSS APPLY
     (SELECT (DiscountAmount - ItemPrice) as FinalTotal) x

您无法在同一查询中引用派生值

尝试

SELECT o.OrderID
, ProductName
, OrderDate
, ItemPrice
, TaxAmount
, DiscountAmount
,DiscountAmount - ItemPrice AS FinalTotal
, Quantity
, ShipDate
,(DiscountAmount - ItemPrice) * Quantity AS ItemTotal
FROM Orders AS o JOIN OrderItems AS oi
    ON o.OrderID = oi.OrderID
 JOIN Products AS p
    ON oi.ProductID = p.ProductID;

简单地说,因为表中没有名为FinalTotal的列,所以这是一个计算列

使用以下代替......

        SELECT o.OrderID, ProductName, OrderDate, ItemPrice, TaxAmount, DiscountAmount,
       DiscountAmount - ItemPrice AS FinalTotal, 
       Quantity, ShipDate,
       (DiscountAmount - ItemPrice) * Quantity AS ItemTotal
FROM Orders AS o JOIN OrderItems AS oi
    ON o.OrderID = oi.OrderID
 JOIN Products AS p ON oi.ProductID = p.ProductID;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM