pl/sql developer 中,两表相减,保存结果

发布网友 发布时间:2022-04-24 09:17

我来回答

4个回答

热心网友 时间:2022-04-11 10:05

建议写一个触发器:
当销量表插入一条的时候,去库存表减去刚才型号的商品数量。

或者两表连接相减:
select A.* from
kucun A join (SELECT "MODEL","SPEC","COLOR",SUM(FIVE) s1,sum(SIX) s2,sum(SEVEN) s3,sum(EIGHT) s4,sum(NINE) s5,sum(TEN) s6
FROM sale
group by MODEL,SPEC,COLOR;
) B
where A.model=B.model and A.spec=B.spec and A.color = B.color
上面的语句就可以查出model spec color 总数量以及销售的总数量s1,s2....
用update相减就可以。
update
kucun A join (SELECT "MODEL","SPEC","COLOR",SUM(FIVE) s1,sum(SIX) s2,sum(SEVEN) s3,sum(EIGHT) s4,sum(NINE) s5,sum(TEN) s6
FROM sale
group by MODEL,SPEC,COLOR
) B
set A.five=A.five-s1 .......--省略
where A.model=B.model and A.spec=B.spec and A.color = B.color
--ORACLE应该是这么写,不知道好不好用,你自己再试一下。

热心网友 时间:2022-04-11 11:23

您好!
看了下您的需求 两表数据相减我写了两种方法,您试试

select * from kucun minus select * from sale;
表记录不能有重复

如果存在主键的情况下可以这样:
select kucun.* from aa kucun,bb sale where kucun.c = sale.c(+) and sale.c is null;
这是效率最高的写法

SQL---
update kucun set (SELECT "MODEL","SPEC","COLOR",SUM(FIVE),sum(SIX),sum(SEVEN),sum(EIGHT),sum(NINE),sum(TEN)
FROM sale
group by MODEL,SPEC,COLOR;) where (select * from kucun minus select * from sale);

热心网友 时间:2022-04-11 12:58

to lelinghong:
你怎么不试一试你的能不能运行?谁试谁知道。

真好笑,你的只不过是比我的多了个
where (a.model, a.spec, a.color) in
(SELECT "MODEL", "SPEC", "COLOR" FROM sale)
你不觉得你这个有些多余吗?在更新的时候我最下边的
WHERE A.MODEL = B.MODEL
AND A.SPEC = B.SPEC
AND A.COLOR = B.COLOR
这几条语句已经把它们给关联好了,再加一次又有何用?只会降低新速度。而且语法错误一堆,你就是通过这种方法,让我把答案更新,然后排在你的后边吧?呵。。。

很久没用Oracle的多表更新了,特意看了一下Oracle多表的语法,下边的语法完全是正确,
把它直接复制到pl/sql deveploer中执行就可以了,看一下结果是不是你想要的。

UPDATE KUCUN A SET (FIVE,SIX,SEVEN,EIGHT,NINE,TEN) =
(SELECT A.FIVE-S5, A.SIX-S6, A.SEVEN-S7, A.EIGHT - S8, A.NINE - S9, A.TEN - S10
FROM (SELECT MODEL,SPEC,COLOR,SUM(FIVE) S5,SUM(SIX) S6,SUM(SEVEN) S7,SUM(EIGHT) S8,SUM(NINE) S9,SUM(TEN) S10
FROM SALE
GROUP BY MODEL,SPEC,COLOR) B
WHERE A.MODEL = B.MODEL
AND A.SPEC = B.SPEC
AND A.COLOR = B.COLOR)

热心网友 时间:2022-04-11 14:49

不用多说了,让楼主来推最佳答案。
跟你多说也无意义。
-------------
这种人都有,无言以对。就算我沉底了,你也不是正确答案。
你不会多弄几条数据做做测试?急急忙忙贴出来赚分,结果是错的,还不让人批评。
-----------------------------
上边的老兄错了,你这样会把没有卖的库存都消掉。看我的这个。
oracle 10G 测试通过。没有问题。
UPDATE kucun a
SET (a.five, a.six, a.seven, a.eight, a.nine, a.ten) = (SELECT a.five -
b.five,
a.six -
b.six,
a.seven -
b.seven,
a.eight -
b.eight,
a.nine -
b.nine,
a.ten -
b.ten
FROM (SELECT "MODEL",
"SPEC",
"COLOR",
SUM(FIVE) as five,
sum(SIX) as six,
sum(SEVEN) as seven,
sum(EIGHT) as eight,
sum(NINE) as nine,
sum(TEN) as ten
FROM sale
group by MODEL,
SPEC,
COLOR) b
WHERE a.model =
b.model
and a.spec =
b.spec
and a.color =
b.color)
where (a.model, a.spec, a.color) in
(SELECT "MODEL", "SPEC", "COLOR" FROM sale)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com