怎么样 用Oracle的存储过程 对A表数据按照B数据进行分摊
例如现在有两张表,一张表里面存着待分配的商品和数量,另一张表里面存着商品需求量,想要把A表中的数据按顺序填充到B表中,然后插入到C表中,最后将分配结果回传到B表的已配中。...
例如现在有两张表,一张表里面存着待分配的商品和数量,另一张表里面存着商品需求量,想要把A表中的数据按顺序填充到B表中,然后插入到C表中,最后将分配结果回传到B表的已配中。需要用一个存储过程来自动执行
展开
1个回答
展开全部
你好!
使用存储过程有点多此一举,你理解一下我下面的SQL:
WITH T AS (
SELECT 'A1' AS INV,1 ODR, 43 amt FROM DUAL
UNION ALL SELECT 'A1' AS INV,2 ODR, 44 amt FROM DUAL
UNION ALL SELECT 'A1' AS INV,3 ODR, 45 amt FROM DUAL
UNION ALL SELECT 'A2' AS INV,1 ODR, 60 amt FROM DUAL
UNION ALL SELECT 'A2' AS INV,2 ODR, 66 amt FROM DUAL
UNION ALL SELECT 'A3' AS INV,1 ODR, 11 amt FROM DUAL
UNION ALL SELECT 'A3' AS INV,2 ODR, 22 amt FROM DUAL
),
t1 AS (
SELECT 'A1' ISV,100 MNT FROM DUAL UNION ALL
SELECT 'A2' ISV,150 MNT FROM DUAL UNION ALL
SELECT 'A3' ISV,30 MNT FROM DUAL
)
SELECT inv,odr,CASE WHEN amt_sum <= mnt THEN amt
ELSE amt-(amt_sum-mnt) END mnt FROM (
SELECT T.*, SUM(AMT) OVER(PARTITION BY INV ORDER BY ODR) AMT_SUM, T1.MNT
FROM T, T1
WHERE T.INV = T1.ISV)
望采纳!
万山数据
2024-11-14 广告
2024-11-14 广告
数据仓库处理是北京万山数据科技有限公司的核心业务之一。我们专注于高效、安全地处理大规模数据,通过先进的数据仓库技术,实现数据的集成、存储、管理和分析。我们的数据仓库解决方案能够支持复杂的数据查询和分析需求,提供实时的数据洞察,助力企业做出更...
点击进入详情页
本回答由万山数据提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询