首页 > 解决方案 > 在 SQL 查询中添加新列

问题描述

我想使用查询结果创建新列,以查找运费对收入的变化

最初的问题是运费额外增加 10% 对收入有何影响。我目前正在使用 Northwind 数据集

select sum(UnitPrice*Quantity*(1-Discount))  - sum(Freight*1.1) as New,  sum(UnitPrice*Quantity*(1-Discount))  - sum(Freight) as Old, New-Old
from "Order Details", Orders;

SQL 查询不起作用,因为它无法识别新变量“New”和“Old”

我已经更新了建议的版本,但它会产生错误消息

NexusDB: Query534984250: Query execution failed: 
NexusDB: Correlation name for subquery expected:
SELECT New,Old,New-Old
FROM  (select
        sum(UnitPrice*Quantity*(1-Discount))  - sum(Freight*1.1) as New,
        sum(UnitPrice*Quantity*(1-Discount))  - sum(Freight) as Old
            FROM "Order Details"
               INNER JOIN  "Orders"  ON ("Order Details".OrderID = Orders.OrderID)
      )  ;

标签: mysqlsqlnorthwind

解决方案


在子查询中运行新和旧列后,您可以使用它们

但是您的(子)查询不会给您正确的结果,因为

From `Order Details`, `Orders`

是两个表之间的交叉连接,并且会返回太多行而无法为您提供预期的结果

所以你会

FROM `Order Details` od 
    INNER JOIN  `Orders` o ON o.id = od.order_REf_id

然后你仍然必须检查结果是否是你正在寻找的

SELECT New,Old, New-Old
FROM  (select 
        sum(UnitPrice*Quantity*(1-Discount))  - sum(Freight*1.1) as New,
        sum(UnitPrice*Quantity*(1-Discount))  - sum(Freight) as Old
        from `Order Details`, `Orders`
      ) t1

最终效果会像

SELECT New,Old, New-Old
FROM  (select 
        sum(UnitPrice*Quantity*(1-Discount))  - sum(Freight*1.1) as New,
        sum(UnitPrice*Quantity*(1-Discount))  - sum(Freight) as Old
            FROM `Order Details` od 
               INNER JOIN  `Orders` o ON o.id = od.order_REf_id`
      ) t1

推荐阅读