根据条件,依基础表数据生成目标表数据?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”不够,需要增加其它字段充当判断条件也可以。

...全文
107 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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)

应该用员工号关联,否则存在同名同姓的不好处理

22,302

社区成员

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

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