mysql - 创建平衡列
问题描述
我有三个表,
t_PRODS (ID, NAME, OLD_QTY)
和
t_INS (ID, PROVIDER_NAME, PRODUCT_ID, QTY)
,
t_OUTS (ID, DEPLOYER_NAME, PRODUCT_ID, QTE)
然后我用 UNION ALL 将它们全部加入以显示它们,两列用于 QTY,第一列用于 QTY_IN,另一列用于 QTE_OUT
SELECT 'Old quantity' AS OPERATION, ID, OLD_QTY AS Q_IN, NULL AS Q_OUT FROM t_PRODS
UNION ALL
SELECT PROVIDER_NAME, PRODUCT_ID, QTY, NULL FROM t_INS
UNION ALL
SELECT DEPLOYER_NAME, PRODUCT_ID, NULL, QTY FROM t_OUTS
我的问题是我想显示另一列这样的余额:
OPERATION ID Q_IN Q_OUT **BALANCE**
Old quantity 1 2 NULL 2
PROVIDER_1 1 20 NULL 22
PROVIDER_2 3 6 NULL 28
DEPLOYER_1 1 NULL 3 25
DEPLOYER_1 1 NULL 6 19
PROVIDER_2 4 5 NULL 24
PROVIDER_3 2 6 NULL 30
DEPLOYER_2 2 NULL 12 18
DEPLOYER_3 4 NULL 7 11
真的我无法解决这个问题,任何帮助将不胜感激!
解决方案
SELECT 'Old quantity' AS OPERATION, ID, OLD_QTY AS Q_IN, NULL AS Q_OUT, BALACNE = 'BALANCE (of previous record) + Q_IN (of current record) - Q_OUT (of current record)' FROM t_PRODS
UNION ALL
SELECT PROVIDER_NAME, PRODUCT_ID, QTY, NULL, NULL FROM t_INS
UNION ALL
SELECT DEPLOYER_NAME, PRODUCT_ID, NULL,NULL, QTY FROM t_OUTS
注意:确保替换'BALANCE (of previous record) + Q_IN (of current record) - Q_OUT (of current record)'
为从中获取值以计算余额的列
推荐阅读
- omnet++ - wsm 消息发送者的外部 ID
- c - 如果(变量)在 C 语言中是什么意思?
- python - 当我尝试在 django 中保存对象时出现错误
- spring-boot - 使用随机用户名使用 Spring 安全性实现 JWT
- html - 改变属于不同_classes_的LI项目之间的距离
- javascript - react.js 未捕获的类型错误
- java - 与 Map 的键相交的列表
- javascript - 有没有办法检查/取消选中一个圆形按钮作为我的例子?
- mysql - Hapi.js 响应“类型”:“缓冲区”
- flutter - 颤振 | 如何在 SQFlite 数据库中存储登录响应