将两个表连接到一个表的SQL
我在下面列出了两条我想要加入的SQL语句,它们各自都可以很好地工作,但是当尝试加入它们时,我没有得到我想要的结果。我将解释我正在使用的3个表,并将代码放在下面 共有3个表stoctran、stock和department。让我们从部门开始,它包含一个部门和一个描述(例如:01,“食品”)。然后是库存表,其中包含代码、说明、部门(代码)、现有(sotre中的项目数量)和avrgcost(产品的平均成本)。最后是stoctran此表包含每个产品在其中的每一笔销售,字段如下:itemcode(与库存中的相同)、tcode(区分发票和贷方票据的代码)、amount(为该项目收取的金额)、cost(该项目的成本)、department(商品所在部门)和txdate(产品销售日期) 正如您在下面的代码中所看到的,我的第一条SQL语句计算某个日期(“2017-01-01”和当前日期)之间的净销售额和净成本,并将其分组为部门,并使用部门表提供其旁边部门的说明。然后,第二条SQL语句使用(onhand*avrgcost)并将其分组到一个部门中,该部门还使用department表在列中添加该部门的说明 现在我的问题是如何连接这两个SQL语句,使我的第一个语句中的所有列都有一个额外的列,其中包含每个部门的总股票价值。因此,基本上取第二个语句的第二列,并将其添加到第一个语句列中 每个部门的净销售额和净成本(第一) 每个部门的持股量(秒)将两个表连接到一个表的SQL,sql,join,Sql,Join,我在下面列出了两条我想要加入的SQL语句,它们各自都可以很好地工作,但是当尝试加入它们时,我没有得到我想要的结果。我将解释我正在使用的3个表,并将代码放在下面 共有3个表stoctran、stock和department。让我们从部门开始,它包含一个部门和一个描述(例如:01,“食品”)。然后是库存表,其中包含代码、说明、部门(代码)、现有(sotre中的项目数量)和avrgcost(产品的平均成本)。最后是stoctran此表包含每个产品在其中的每一笔销售,字段如下:itemcode(与库存中
我删除了不兼容的数据库标记。请仅使用您实际使用的数据库进行标记。谢谢,但这不适用于我当前使用的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)