根据条件,依基础表数据生成目标表数据?SQL 2005

sunboy_163 2010-10-27 02:18:36
人员工资配置表:hrmConfig

hr_id hr_xm hr_jbgz hr_jx
1 张三 1500 800
2 李四 1500 600

人员工资管理表:hrmManager

hm_id hm_xm hm_jbgz hm_jx hm_createDate
1 张三 1500 800 2010-10-27 14:07:34
2 李四 1500 600 2010-10-27 14:07:34

说明:hr_id,hm_id为自增序列,hm_createDate系统默认生成时间。

需求:

每个月财务会根据“人员工资配置表:hrmConfig”生成相对应的“人员工资管理表:hrmManager”,这样基础数据就有了,现在问题是?如何每月个此操作仅执行一次,并且已经存在的不在生成?

insert into hrmManager (hm_xm,hm_jbgz,hm_jx) select hr_xm,hr_jbgz,hr_jx from hrmConfig

上述SQL是可以生成,但没有条件判断,点击“生成按钮”就生成一次,就重复了。不想在程序里判断,想在SQL这里判断一下,如果当月已经生成数据,在不用重复生成,把没有生成就可以了。

如果判断字段“hm_createDate”不够,需要增加其它字段充当判断条件也可以。

...全文
78 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
linguojin11 2010-10-27
后面加个select @@ROWCOUNT
回复
sunboy_163 2010-10-27
谢谢大家!问题得到解决!


还有一个小问题,能不能返回有多少条记录被生成?
回复
hovy_yang 2010-10-27
判断一下是否在同一个月里相同姓名(假定没有员工重名,重名用工号代替)是否存在、存在则不能插入。
如1楼的sql语句
回复
SQLCenter 2010-10-27
hrmManager 宁可不要 hr_xm 也要 hr_id,当然不在乎冗余可以 hr_id, hr_xm 同时存在。
回复
sunboy_163 2010-10-27
[Quote=引用 3 楼 josy 的回复:]

修正
SQL code
insert into hrmManager (hm_xm,hm_jbgz,hm_jx)
select hr_xm,hr_jbgz,hr_jx
from hrmConfig t
where not exists(
select 1
from hrmManager
where hm_xm=t.hm_xm
and date……
[/Quote]

防止姓名重名,两张表同时增加唯一员工编号:hr_num,(不重复)如何修改?
回复
ForFumm 2010-10-27
insert into hrmManager (hm_xm,hm_jbgz,hm_jx) select hr_xm,hr_jbgz,hr_jx from hrmConfig tb where  not exists (select 1 from hrmConfig where hm_xm=tb.hm_xm)
回复
百年树人 2010-10-27
修正
insert into hrmManager (hm_xm,hm_jbgz,hm_jx) 
select hr_xm,hr_jbgz,hr_jx
from hrmConfig t
where not exists(
select 1
from hrmManager
where hm_xm=t.hm_xm
and datediff(mm,getdate(),hm_createDate)=0
)

回复
SQLCenter 2010-10-27
--hrmManager 添加 hr_id
insert into hrmManager (hr_id, hm_xm,hm_jbgz,hm_jx) select hr_id, hr_xm,hr_jbgz,hr_jx from hrmConfig t
where not exists (select 1 from hrmManager where hr_id=t.hr_id and month(hm_createDate)=month(getdate()))
回复
百年树人 2010-10-27
insert into hrmManager (hm_xm,hm_jbgz,hm_jx) 
select hr_xm,hr_jbgz,hr_jx from hrmConfig t
where not exists(select 1 from hrmConfig where hm_xm=t.hm_xm and datediff(mm,hm_createDate,t.hm_createDate)=0)

应该用员工号关联,否则存在同名同姓的不好处理
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-27 02:18
社区公告
暂无公告