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

合計は、次のようなクエリの他の計算で使用できる列です。

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 に答える