首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得产品名称、数量和余额?

如何获得产品名称、数量和余额?
EN

Stack Overflow用户
提问于 2019-12-15 13:55:23
回答 1查看 55关注 0票数 0

我有三张桌子

DMZ:

代码语言:javascript
复制
Ndm int - number of Document
Ddm date - date of supply
Pr int - 1(income), 2(expense)

DMS:

代码语言:javascript
复制
Id int
Kol decimal - quantity of product
Price decimal
Ndm int - number of document foreign key with DMZ
Ktov int - id of product foreign key with TOV

TOV:

代码语言:javascript
复制
Ktov - id if product
Ntov - name of product

我需要得到平衡是收入和开支之间的差额。

结构:

产品名称(Ntov)

  • Amount of
  1. 余额金额准确到分值(销售期间支出和收到的差额)

按Ntov,按每种产品,对有收入和可能有费用的每一种产品进行分类,在报告中列出一行摘要。

现在我有了这个sql请求,但是我被困住了:/请帮助我做错了什么?

代码语言:javascript
复制
SELECT
 Ntov AS Product,
 SUM(CASE WHEN Pr = 1 then Kol*Price ELSE 0 END) AS Income,
 SUM(CASE WHEN Pr = 2 then Kol*Price ELSE 0 END) AS Expense,
 COUNT(DMS.Kol) AS LeftProducts
FROM DMS LEFT JOIN TOV
on DMS.Ktov = Tov.Ktov 
LEFT JOIN DMZ on DMS.Ndm = DMZ.Ndm
GROUP BY Ntov, Kol, Price
ORDER BY Product

DMS数据:http://prntscr.com/qb3qiq

非军事区数据:http://prntscr.com/qb3qog

TOV:http://prntscr.com/qb3qrl数据

结果:http://prntscr.com/qb3q92

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-15 14:17:08

您可以聚合并执行有条件和。考虑:

代码语言:javascript
复制
select
    t.ntov,
    sum(case z.pr when 1 then s.kol when 2 then - s.kol else 0 end) residue,
    sum(case z.pr when 1 then s.price when 2 then - s.price else 0 end) balance
from tov t
left join dms s on t.ktov = s.ktov
left join dmz z on s.ndm = z.ndm
group by t.ntov, t.ktov
order by t.ntov
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59344573

复制
相关文章

相似问题

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