c# - X Element 匹配时在表之间减去数据
问题描述
解释有点长,但我想让我尽可能详细地理解这个问题。我有 4 个表格,2 个表示使用的材料和退回的材料的信息(Transactions
和Return
s),另外 2 个表详细说明使用或退回的材料(Trans_det1
和Devol_det1
)
每种材料使用与否都由boletas
(工单)详述,工单详述,例如:
我有以下句子:
--REGISTRATION OF INCOME
SELECT*FROM Transa WHERE orden='GORE-999888'
--REGISTRATION OF RETURNS
SELECT*FROM Devol WHERE orden='GORE-999888'
它返回这个:
该Transa
表返回用于该订单的所有票,Devol
但还显示了boletas
用于退回材料的(票)。
材料细节
--WHAT WAS USED
SELECT Transa_det1.boleta, Transa_det1.rollo, Transa_det1.cantidad FROM Transa_det1,Transa
WHERE Transa.boleta=Transa_det1.boleta AND orden='GORE-999888'
--WHAT WAS RETURNED
SELECT Devol_det1.boleta, Devol_det1.rollo, Devol_det1.cantidad FROM Devol_det1, Devol
WHERE Devol_det1.boleta=Devol.boleta AND orden='GORE-999888'
它返回这个:
它返回rollos
订单 XXXX 的票中使用的数量以及使用了多少,第二个表显示了rollos
返回的数量。
我的问题,对于RT0102
rollo
我正在使用的100.5
,但后来我返回100
了我真正使用的是0.5
,相同的RT0103
使用250
,但后来我返回50
了,有一种方法可以在rollo
匹配时进行减法,而它们的顺序相同单个查询?我的意思是我需要一种方法来返回这个:
RT0103 0.5
RT0102 200
FH0091 465.75 //DON'T SUFFER CHANGES BECAUSE I DIDN'T RETURN THIS MATERIAL
解决方案
下面将是获得预期结果的查询,您可以使用 case 语句
select t1.rollo,
case when t2.cantidad is null then 0 // if canditad does not have value in DevolDtl then return 0 else do the subtraction
else t1.cantidad-t2,canditad end as result from
(
SELECT Transa_det1.boleta, Transa_det1.rollo, Transa_det1.cantidad FROM Transa_det1,Transa
WHERE Transa.boleta=Transa_det1.boleta AND orden='GORE-999888') t1
left outer join
(
SELECT Devol_det1.boleta, Devol_det1.rollo, Devol_det1.cantidad FROM Devol_det1, Devol
WHERE Devol_det1.boleta=Devol.boleta AND orden='GORE-999888') t2
on t1.boleta=t2.boleta;
推荐阅读
- dhall - 传递文件名作为参数读取
- python - 有没有办法通过 Python 运行查询从 Oracle 数据库中获取数值?
- go - 为什么结构可以作为接口传递给函数?
- php - 注册时尝试在用户上分配 Wordpress 帖子
- python - 使用 numpy.where 向数据框输入值
- python - sklearn 中 BaggingClassifier 的默认配置与硬投票的区别
- php - 参数必须是实现 Countable 的数组或对象如何解决这个问题?
- image-segmentation - 加载 nii.zip(压缩)3d 分割文件
- javascript - input.scrollLeft 在 Chome 和 Firefox 中的行为异常
- svg - 根据现有形状生成 SVG 路径