首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从购销表中减去找到的余额

从购销表中减去找到的余额
EN

Stack Overflow用户
提问于 2017-11-11 21:07:43
回答 3查看 569关注 0票数 0

我有两个表:一个是购买表,另一个是销售表,实际上,我需要使用减去两个表的余额,从表购买中减去销售。下面给出了我的代码

创建表购买( id号(10)主键,名称varchar2(10),p_qty编号(10) );

并插入数据:

插入购买值(01,'productB',235);插入购买值(04,'productC',394);插入购买值(05,'productD',381);插入购买值(08,'productE',357);插入购买值(09,'productF',389);插入购买值(10,'productQ',336);

另一表:销售

创建表销售( id编号(10),s_qty编号(10),约束pid_pk外键(Id)引用购买(Id) );

将数据插入salse表:

插入销售值(01,34);插入销售值(04,54);插入销售值(05,44);插入销售值(09,50);插入销售值(01,3);插入销售值(04,4);插入销售值(05,5);插入销售值(09,53);插入销售值(01,2);插入销售值(04,2);插入销售值(05,2);插入销售值(09,2);插入销售值(01,4);插入销售值(04,9);插入销售值(0 5,11);插入销售值(0 9,7);

我使用了两个查询

查询1:

代码语言:javascript
运行
复制
 select  id,name,sum(p_qty) as p_total  from purchase  group by id,name;

ID名称P_TOTAL 5 productD 381 10 productQ 336 4 productC 394 1 productB 235 8 productE 357 9 productF 389

QUERY2:

按ID从销售组选择id,sum(s_qty)作为s_total;‘ID S_TOTAL 1 43 4 69 5 62 9 112

现在我想在下面的表格下面平衡每一项。

ID名称P_TOTAL S_TOTAL BALANCE 5 productD 381 62 319 4 productC 394 69 325 1 productB 235 43 192 9 productF 389 112 277

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-11 22:13:03

希望这能有所帮助。

代码语言:javascript
运行
复制
  SELECT p.id, p.name, p.p_total, s.s_total, 
  p.p_total - s.s_total AS balance
  FROM (select id, name, sum(p_qty) as p_total FROM purchase 
  GROUP BY id, name) p
  INNER JOIN (select id, sum(s_qty) as s_total FROM sales 
  GROUP BY id) s
  ON s.ID = p.ID;
票数 2
EN

Stack Overflow用户

发布于 2017-11-11 22:12:11

你快到了。使用您已经拥有的两个查询并将它们连接在一起:

代码语言:javascript
运行
复制
SELECT p.ID,
       p.NAME,
       p.P_TOTAL,
       s.S_TOTAL,
       p.P_TOTAL - s.S_TOTAL AS BALANCE
  FROM (select id, name, sum(p_qty) as p_total
          from purchase
          group by id, name) p
  INNER JOIN (select id, sum(s_qty) as s_total
                from sales
                group by id) s
    ON s.ID = p.ID

祝你好运。

票数 0
EN

Stack Overflow用户

发布于 2017-11-11 22:12:34

我想在表下面平衡每一项。

您想要每个项目的余额,但只显示销售项目的余额。

如果您想要购买的每个项目,您可以使用left join与子查询:

代码语言:javascript
运行
复制
select p.id, p.name, p_total, coalesce(s_total, 0),
       (p_total - coalesce(s_total, 0)) as balance
from (select id, name, sum(p_qty) as p_total
      from purchase
      group by id,name
     ) p left join
     (select id, sum(s_qty) as s_total
      from sales
      group by id
     ) s
     on p.id = s.id;

如果您希望每个项目都有销售,那么只需使用inner join

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47242794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档