SQL嵌套查询计算

时间:2012-09-04 17:40:04

标签: sql

    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

我想弄清楚这个查询,但我无法在另一个coloumn中显示总数 显示含税和折扣最低数据

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

我的查询有什么问题?

1 个答案:

答案 0 :(得分: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