我想用sql语句实现这样一个建立新数据的功能,该如何做?(100分)

  • 主题发起人 主题发起人 sxbug
  • 开始时间 开始时间
S

sxbug

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现一个这样的功能:创建一个月的煤气扣款表,用sql语句实现。
具体要求是,新的月数据需要依赖老的数据,新建的月煤气扣款表里面的员工
编号和账号要从员工数据表里面临时取,因为每个月员工会有变动。
员工数据取来以后,再将上月的煤气扣款数据添加
到新建的月煤气扣款表中,因为每个人每个月的扣款会差不多。:)
我下面的写法好像有问题。高手们帮我改改,或有什么别的好办法实现
望指教!谢谢

INSERT INTO GASCOST (EMPNO, EMPNO_INNER , REC_DATE , GASCOSTNUM ,
DEC1 , DEC2 , DEC3 , TOTALCOST , MEMO )
SELECT EMPNO, EMPNO_INNER , TO_DATE(NEW_MONTH,'MM/DD/YYYY') AS REC_DATE,
0 AS GASCOSTNUM, 0 AS DEC1, 0 AS DEC2, 0 AS DEC3, 0 AS TOTALCOST, '-' AS MEMO
FROM STAFF;
UPDATE GASCOST SET(GASCOSTNUM , DEC1 , DEC2 , DEC3 , TOTALCOST , MEMO)
=SELECT GASCOST.GASCOSTNUM ,
GASCOST.DEC1 , GASCOST.DEC2 , GASCOST.DEC3 , GASCOST.TOTALCOST , GASCOST.MEMO
FROM GASCOST,STAFF
WHERE GASCOST.REC_DATE=TO_DATE(ORIG_MONTH,'MM/DD/YYYY') AND GASCOST.EMPNO=STAFF.EMPNO;
 
UPDATE GASCOST SET(GASCOSTNUM , DEC1 , DEC2 , DEC3 , TOTALCOST , MEMO)
SELECT GASCOST.GASCOSTNUM ,
GASCOST.DEC1 , GASCOST.DEC2 , GASCOST.DEC3 , GASCOST.TOTALCOST , GASCOST.MEMO
FROM GASCOST,STAFF
WHERE GASCOST.REC_DATE=TO_DATE(ORIG_MONTH,'MM/DD/YYYY') AND GASCOST.EMPNO=STAFF.EMPNO;
//
update gastcost
set gascostnum=gastcostnm.gasostnum,
.....
from gastcostnm,staff
WHERE GASCOST.REC_DATE=TO_DATE(ORIG_MONTH,'MM/DD/YYYY') AND GASCOST.EMPNO=STAFF.EMPNO;
 
可以通过创建视图的方式来进行,如用:
CREATE OR REPLACE VIEW VM_RESULT
AS
SELECT EMPNO, EMPNO_INNER,TO_DATE(NEW_MONTH,'MM/DD/YYYY') AS REC_DATE,
0 AS GASCOSTNUM, 0 AS DEC1, 0 AS DEC2, 0 AS DEC3, 0 AS TOTALCOST, '-' AS MEMO
FROM STAFF;
可以在select字段中直接用计算公式。这样的每次生成的视图表都是新的。
 
to vgvanzk:
如果这个月添加了新员工,那么在新建的煤气表里面就没有他的纪录了,而实际上我是
需要的
to jiabingli:
我是要产生新的纪录,做试图 好像不适合
 
to vgvanzk:
好像我领会错了 sorry
 
都不行,大家想想还有什么办法?
 
高手到哪里去了?
 
不知你用的什么数据库?sql可能不同,最简单的你建三个表gascost_last,gascost_this,
gascost_sum,把上月和这月记录的记录插入gascost_sum,按你标的字段group by合计分组就行了;
用临时表也是可以的, 不用建三个同样的表
 
后退
顶部