繁体   English   中英

如何减去2列作为子查询的结果

[英]How to do a subtract of 2 columns that were the results of a sub-query

我有这个查询,它按预期工作正常,即,它显示所有列以及每个子查询的2列...

SELECT 
    a.group_id,
    a.code,
    a.description_en,
    c.size_code,
    (
        SELECT
            SUM(b.qty)
        FROM
            receiving_details AS b
        WHERE
            b.code = c.size_code
    ) AS in_qty,
    (
        SELECT
            SUM(d.qty)
        FROM
            requisition_details AS d
        WHERE
            d. matl_code = c.size_code
    ) AS out_qty
FROM products AS a
INNER JOIN products_sizes AS c ON c.prod_code = a.code
ORDER BY a.group_id ASC, a.code ASC, c.size_code ASC

但是,当我尝试添加此行时...

(in_qty - out_qty) AS balance,

在“ FROM”语句之前,我在“字段列表”中收到未知列'in_qty'的错误。

我究竟做错了什么?

编辑:

从接受的答案中,我做了一些修复,并得到了想要的结果。

SELECT *, (e.in_qty - e.out_qty) AS balance FROM
(SELECT 
    a.group_id,
    a.code,
    a.description_en,
    c.size_code,
    (
        SELECT
            IFNULL(SUM(b.qty),0)
        FROM
            receiving_details AS b
        WHERE
            b.code = c.size_code
    ) AS in_qty,
    (
        SELECT
            IFNULL(SUM(d.qty),0)
        FROM
            requisition_details AS d
        WHERE
            d. matl_code = c.size_code
    ) AS out_qty
FROM products AS a
INNER JOIN products_sizes AS c ON c.prod_code = a.code) AS e
ORDER BY e.group_id ASC, e.code ASC, e.size_code ASC

您不能在自己的select语句中引用相同的字段。 一种选择是将结果移动到另一个子查询中,然后执行计算:

select *, (in_qty - out_qty) AS balance
from (
    SELECT 
        a.group_id,
        a.code,
        a.description_en,
        c.size_code,
        (
            SELECT
                SUM(b.qty)
            FROM
                receiving_details AS b
            WHERE
                b.code = c.size_code
        ) AS in_qty,
        (
            SELECT
                SUM(d.qty)
            FROM
                requisition_details AS d
            WHERE
                d. matl_code = c.size_code
        ) AS out_qty
    FROM products AS a
    INNER JOIN products_sizes AS c ON c.prod_code = a.code
) t
ORDER BY group_id, code, size_code

暂无
暂无

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

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