将两个表连接到一个表的SQL

将两个表连接到一个表的SQL,sql,join,Sql,Join,我在下面列出了两条我想要加入的SQL语句,它们各自都可以很好地工作,但是当尝试加入它们时,我没有得到我想要的结果。我将解释我正在使用的3个表,并将代码放在下面 共有3个表stoctran、stock和department。让我们从部门开始,它包含一个部门和一个描述(例如:01,“食品”)。然后是库存表,其中包含代码、说明、部门(代码)、现有(sotre中的项目数量)和avrgcost(产品的平均成本)。最后是stoctran此表包含每个产品在其中的每一笔销售,字段如下:itemcode(与库存中

我在下面列出了两条我想要加入的SQL语句,它们各自都可以很好地工作,但是当尝试加入它们时,我没有得到我想要的结果。我将解释我正在使用的3个表,并将代码放在下面

共有3个表stoctranstockdepartment。让我们从部门开始,它包含一个部门和一个描述(例如:01,“食品”)。然后是库存表,其中包含代码、说明、部门(代码)、现有(sotre中的项目数量)和avrgcost(产品的平均成本)。最后是stoctran此表包含每个产品在其中的每一笔销售,字段如下:itemcode(与库存中的相同)、tcode(区分发票和贷方票据的代码)、amount(为该项目收取的金额)、cost(该项目的成本)、department(商品所在部门)和txdate(产品销售日期)

正如您在下面的代码中所看到的,我的第一条SQL语句计算某个日期(“2017-01-01”和当前日期)之间的净销售额和净成本,并将其分组为部门,并使用部门表提供其旁边部门的说明。然后,第二条SQL语句使用(onhand*avrgcost)并将其分组到一个部门中,该部门还使用department表在列中添加该部门的说明

现在我的问题是如何连接这两个SQL语句,使我的第一个语句中的所有列都有一个额外的列,其中包含每个部门的总股票价值。因此,基本上取第二个语句的第二列,并将其添加到第一个语句列中

每个部门的净销售额和净成本(第一)

每个部门的持股量(秒)


我删除了不兼容的数据库标记。请仅使用您实际使用的数据库进行标记。谢谢,但这不适用于我当前使用的sql数据库。我没有在Microsoft sql上尝试过。我的数据库使用odbc驱动程序并包含.dat文件,我使用DBSys访问数据库。
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
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
select net.*, stock.StockValue
  from (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) net
  join (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) stock
    on (stock.department=net.department)