0
    SELECT *, 
           (select SUM(sl.priceeach*sl.qty) as 'tot' 
                  from salesline sl where sl.soid=so.soid) as 'total',
           so.total,
           so.discount,
           so.tax
    from salesorder so

我试图弄清楚这个查询,但我无法在另一列中显示总数以显示含税和减去折扣的数据

ERROR : #1054 - Unknown column 'so.total' in 'field list' 

我的查询有什么问题?

4

1 回答 1

1

首先,您不想为此使用相关子查询。事实上,你应该永远不要使用它们,因为它们像游标一样逐行处理。

CTE 或派生表将完成这项工作。

SELECT a.total, 
       so.discount, 
       so.tax 
FROM salesorder so 
JOIN 
    (SELECT sl.soid,SUM(sl.priceeach*sl.qty) AS 'total'  
     FROM salesline sl GROUP BY sl.soid) A
    ON A.soid = so.soid

现在 total 是一个可用列,可用于查询中的其他计算,例如:

SELECT a.total, 
       so.discount, 
       so.tax,
       so.tax*a.total as TaxableAmount 
FROM salesorder so 
JOIN 
    (SELECT sl.soid,SUM(sl.priceeach*sl.qty) AS 'total'  
     FROM salesline sl GROUP BY sl.soid) A
    ON A.soid = so.soid
于 2012-09-04T18:07:34.413 回答