如何把查询出来的多个记录,再对这些记录的某一字段的值进行筛选?

weixin_39188730 2017-07-09 01:01:16
我有一个进货表A,里面有品名、价格,还有一个库存表B,也有品名和价格。我想在A表插入记录时,触发一个事件,这个事件是:当B表中没有A表的品名时,就把A表的品名和价格插入进来。当B表中有A表的品名时,就判断B表的这些记录中价格和A表之间的差值有大于200的时候,就插入A表的品名和价格,如果不大于200,就不插入。这样应该如何编写SQL语句或是存储过程呢?
如下图
表A中的aa产品就要加入到表B中,但是表A中的bb产品就不需要加入表B中。

...全文
864 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdlglb 2017-07-10
  • 打赏
  • 举报
回复
dd 1000 dd 1300 dd 700 dd 500 测试
wdlglb 2017-07-10
  • 打赏
  • 举报
回复
引用 3 楼 二月十六的回复:
如果a表一起插入了两条 dd 1000 dd 900 b表中怎么插入?
我觉得是有问题的,只是说差别在200以内,所以可以是多200也可以是少200,你这差100只插入一个吧
  • 打赏
  • 举报
回复

CREATE OR REPLACE TRIGGER TR_TEST1
AFTER   INSERT
ON A
   FOR EACH ROW
     DECLARE PL1 A.PL%TYPE;
     JG1 B.JG%TYPE ;
     JG2 A.JG%TYPE;
     NN NUMBER;
begin
    PL1:=:NEW.PL;
    JG2:=:NEW.JG;
    SELECT MAX(JG) AS  MJG INTO JG1  FROM B WHERE PL=PL1;
    SELECT COUNT(*) AS NUM1 INTO NN FROM B WHERE PL=PL1;
    IF NN<>0 THEN 
       CASE WHEN JG1>=200+JG2 UPDATING  THEN
       INSERT INTO B (PL,JG) VALUES(PL1,JG1) ;
       END CASE;
       END IF;
  end;
二月十六 2017-07-09
  • 打赏
  • 举报
回复
如果a表一起插入了两条 dd 1000 dd 900 b表中怎么插入?
wdlglb 2017-07-09
  • 打赏
  • 举报
回复
引用 1 楼 稳健老实人的回复:

CREATE OR REPLACE TRIGGER TR_TEST1
AFTER   INSERT
ON A
   FOR EACH ROW
     DECLARE PL1 A.PL%TYPE;
     JG1 B.JG%TYPE ;
     JG2 A.JG%TYPE;
     NN NUMBER;
begin
    PL1:=:NEW.PL;
    JG2:=:NEW.JG;
    SELECT MAX(JG) AS  MJG INTO JG1  FROM B WHERE PL=PL1;
    SELECT COUNT(*) AS NUM1 INTO NN FROM B WHERE PL=PL1;
    IF NN<>0 THEN 
       CASE WHEN JG1>=200+JG2 UPDATING  THEN
       INSERT INTO B (PL,JG) VALUES(PL1,JG1) ;
       END CASE;
       END IF;
  end;
好怪异的语法格式,学习了

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧