现有三个表结构如下:
表1:工资表
create table t_salary
(
  预编单位ID   VARCHAR2(50),
  功能科目   VARCHAR2(50),
  员工编号   VARCHAR2(50),
  员工姓名   VARCHAR2(50),
  身份证号码  VARCHAR2(50),
  工资账号   VARCHAR2(50),
  工资类型   VARCHAR2(50)
)
表2:功能科目表
create table T_SALARY_FUNCITEM
(
  ITEMID       NUMBER(9),
  预编单位ID        NUMBER(22),
  科目ID      NUMBER(22),
  FILTER       VARCHAR2(200),--主要是插入这个字段和下面字段
  FILTERNAME   VARCHAR2(200),--主要是插入这个字段
  EXPECONORMIC NUMBER(9),
  PAYTYPE      NUMBER(22)
)
表3:功能科目临时表
create table FUN_TEMP
(
  科目ID          VARCHAR2(200),
  FUNCODE  VARCHAR2(200),
  BDGCODE  VARCHAR2(200),
  BDGNAME  VARCHAR2(200),
  PERNAME  VARCHAR2(200),
  员工编号  VARCHAR2(200),
  预编单位ID VARCHAR2(200)
)
现在想在表2“功能科目表”表中插入以下语句:
insert into T_SALARY_FUNCITEM (ITEMID, 预编单位ID, 科目ID, FILTER, FILTERNAME, EXPECONORMIC, PAYTYPE)
values (123, 90, 12769,' SALARYTYPE = ''89'' and PERSONCODE in (2070011685,2070011695) ','工资类型=89并且员工编号hz in (2070011685,2070011686)', 3, 0);
说明下:
①、123取值于一序列
②、90取于表2:功能科目表的 预编单位ID
③、SALARYTYPE = ''89'' and PERSONCODE in (2070011685,2070011695) 中只有89和后面括号的数字是变得,89取之于t_salary表的工资类型字段值,2070011685和2070011695取之于t_salary表的员工编号字段值 
④、3和0字段不管,固定即可
请大家看看怎么实现上面的插入语句,由于数据较多 手工维护比较麻烦 ,易出错,大家帮小弟解决下 ,万分感谢!!如有疑问请加我QQ:810880571

解决方案 »

  1.   

    写plsql存储过程吧,一个sql很难完成
      

  2.   

    T_SALARY_FUNCITEM 表中 FILTER 字段值意义是个过滤条件,条件中PERSONCODE in(?)这里的?取工资表的员工编号值,SALARYTYPE ="?" ?是取对应员工编号的中的工资类型的字段值,自己试着写如下的的语句:
    select 'insert into T_SALARY_FUNCITEM (ITEMID, AGENCY, EXPFUNC, FILTER, FILTERNAME, EXPECONORMIC, PAYTYPE) values (S_SALARYFUNCITEM.nextval,'''
           --||(select itemid from t_pubbdgdivision A WHERE a.code=(SELECT 单位代码 FRO ))
           ||单位id||''',''' 
           ||功能科目id||''','''
           ||(SALARYTYPE = ''(SELECT 工资类型 FROM T_SALARY)'' and PERSONCODE in (select 员工编号 from t_salary where  工资类型='') ....  写不出来 不知道描述的还有哪里不清楚 请大家说出来 我再解释
      

  3.   

    T_SALARY_FUNCITEM 表中 FILTER 字段值意义是个过滤条件,条件中PERSONCODE in(?)这里的?取工资表的员工编号值,SALARYTYPE ="?" ?是取对应员工编号的中的工资类型的字段值,自己试着写如下的的语句:
    select 'insert into T_SALARY_FUNCITEM (ITEMID, AGENCY, EXPFUNC, FILTER, FILTERNAME, EXPECONORMIC, PAYTYPE) values (S_SALARYFUNCITEM.nextval,'''
      --||(select 预编单位ID  FROM  t_salary))
      ||单位id||''','''  
      ||功能科目id||''','''
      ||(SALARYTYPE = ''(SELECT 工资类型 FROM T_SALARY)'' and PERSONCODE in (select 员工编号 from t_salary where 工资类型='') .... 写不出来 不知道描述的还有哪里不清楚 请大家说出来 我再解释
      

  4.   

    你要插入多少条数据?主来源在哪里?能不能用一条select写出来?能就insert into 表(字段,......) select ........  from 来源表