我在下面提出了两条我想加入的SQL语句,它们都单独工作得很好,但当试图连接它们时,我没有得到我期待的结果。我将解释我正在使用的3个表格,并将代码放在下面。将两个表连接到一个的SQL
有3个表stoctran,股票和部门。我们从部门开始,它包含一个部门和一个描述(例如:01,'Food')。然后是股票表,其中包含代码,说明,部门(代码),一手(在sotre中的项目数量)和avrgcost(产品的平均成本)。然后最后有stoctran此表具有每个产品在其中的每个销售,它的领域如下:项目代码(与股票相同),tcode(区分发票和信用票据的代码),金额(该项目收取的金额),成本(该项目的成本),部门(项目所在部门)和txdate(产品销售日期)。
正如你可以在代码中看到的,我的第一条SQL语句计算某个日期('2017-01-01'和当前日期)之间的nettsales和nettcost,并将它分组为部门并使用部门表提供其旁边部门的描述。然后,第二个SQL语句使用(onhand * avrgcost)对总库存值进行归纳,并将其分组到一个部门中,该部门也使用部门表在列中添加其描述。
现在我的问题是如何加入这两个SQL语句的方式,使第一个语句中的所有列都包含每个部门的总库存值。所以基本上把第二条语句的第二列添加到第一条语句列中。
净销售额和净成本每部(首)
SELECT
a.DEPARTMENT,
b.DESCRIPTIO,
ROUND(SUM(IF(a.TCODE = 'IN', a.AMOUNT, 0)) -
SUM(IF(a.TCODE = 'CN', a.AMOUNT, 0)), 2) As NettSales,
ROUND(Sum(If(a.TCODE = 'IN', a.COST, 0)) - Sum(If(a.TCODE = 'CN', a.COST, 0)) As NettCost
FROM
stoctran a
LEFT JOIN
department b ON a.DEPARTMENT = b.DEPARTMENT
WHERE
a.TXDATE BETWEEN ;2017-01-01' And current_date
GROUP BY
a.DEPARTMENT
持股每Departmnet(第二)
SELECT
a.DEPARTMENT,
SUM(a.AVRGCOST * a.ONHAND) As StockValue
FROM
stock a
LEFT JOIN
department b On a.DEPARTMENT = b.DEPARTMENT
GROUP BY
a.DEPARTMENT
我删除了不兼容的数据库标签。请仅使用您实际使用的数据库进行标记。 –