有一表,记录如下,每条记录有两条,不同之处为日期上,现想更新表月分部门,更新条件为:同一个人,较早升职日期对应的月份值从较晚的升职日期月分向后开始值如果为1变为0,其余值不变;较晚升职日期对应的月份值从较早的升职日期月分开始向前值如果为1变为0,其余值不变原表:
____________________________________________________________________________________________________________________
姓名 升职日期 入职日期 离职日期 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
A 2008-10-17 2008-03-11 NULL 0 0 1 1 1 1 1 1 1 1 1 1
A 2008-03-17 2008-03-11 NULL 0 0 1 1 1 1 1 1 1 1 1 1
B 2008-02-01 2006-11-10 NULL 1 1 1 1 1 1 1 1 1 1 1 1
B 2008-07-28 2006-11-10 NULL 1 1 1 1 1 1 1 1 1 1 1 1
C 2008-09-08 2007-03-26 2008-10-15 1 1 1 1 1 1 1 1 1 -1 0 0
C 2008-02-01 2007-03-26 2008-10-15 1 1 1 1 1 1 1 1 1 -1 0 0变更后的表:
___________________________________________________________姓名 升职日期 入职日期 离职日期 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
A 2008-10-17 2008-03-11 NULL 0 0 0 0 0 0 0 0 0 1 1 1
A 2008-03-17 2008-03-11 NULL 0 0 1 1 1 1 1 1 1 0 0 0
B 2008-02-01 2006-11-10 NULL 1 1 1 1 1 1 0 0 0 0 0 0
B 2008-07-28 2006-11-10 NULL 0 0 0 0 0 0 1 1 1 1 1 1
C 2008-09-08 2007-03-26 2008-10-15 0 0 0 0 0 0 0 0 1 -1 0 0
C 2008-02-01 2007-03-26 2008-10-15 1 1 1 1 1 1 1 1 0 0 0 0简单的讲就是:
比如第一次升职日期为2008-02-01,第二次升职日期为:2008-09-01
原值
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
变更为
1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1
不知道哪位大哥知道更新这样表,多谢
____________________________________________________________________________________________________________________
姓名 升职日期 入职日期 离职日期 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
A 2008-10-17 2008-03-11 NULL 0 0 1 1 1 1 1 1 1 1 1 1
A 2008-03-17 2008-03-11 NULL 0 0 1 1 1 1 1 1 1 1 1 1
B 2008-02-01 2006-11-10 NULL 1 1 1 1 1 1 1 1 1 1 1 1
B 2008-07-28 2006-11-10 NULL 1 1 1 1 1 1 1 1 1 1 1 1
C 2008-09-08 2007-03-26 2008-10-15 1 1 1 1 1 1 1 1 1 -1 0 0
C 2008-02-01 2007-03-26 2008-10-15 1 1 1 1 1 1 1 1 1 -1 0 0变更后的表:
___________________________________________________________姓名 升职日期 入职日期 离职日期 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
A 2008-10-17 2008-03-11 NULL 0 0 0 0 0 0 0 0 0 1 1 1
A 2008-03-17 2008-03-11 NULL 0 0 1 1 1 1 1 1 1 0 0 0
B 2008-02-01 2006-11-10 NULL 1 1 1 1 1 1 0 0 0 0 0 0
B 2008-07-28 2006-11-10 NULL 0 0 0 0 0 0 1 1 1 1 1 1
C 2008-09-08 2007-03-26 2008-10-15 0 0 0 0 0 0 0 0 1 -1 0 0
C 2008-02-01 2007-03-26 2008-10-15 1 1 1 1 1 1 1 1 0 0 0 0简单的讲就是:
比如第一次升职日期为2008-02-01,第二次升职日期为:2008-09-01
原值
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
变更为
1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1
不知道哪位大哥知道更新这样表,多谢
解决方案 »
- vs2010 连接office2010 access,为什么找不到f:\\asd.accdb??
- 关于3层c/s结构的中间层 数据库层 如何设计?
- 我有个想法
- gridview控件的OnPageIndexChanged问题
- Windows Media Player 浏览按钮问题
- 我写的划线方法,怎么窗体创建时不运行呢?
- 在web编程时,如何得到alert对话框的返回值呀?
- 思归大哥:请帮我看看这段代码.谢谢!
- 调用API的时候,出现“提示"Advapi32.lib"库没有找到”的问题。请问高手如何解决?
- 关于C#资源回收的问题
- 上传文件下载后全是System.Byte[]帮我看下上传文件的代码,哪里出错了呢
- 如何设置一 个FORM在屏幕上的绝对位置
b.最大日期记录:取月份值,如9,更新大于等于9的字段为1,其余更新为0.
c.最小日期记录:取月份值,如9,更新小于9的字段为1,其余更新为0.不知道我的理解是不是这样的?
set
1月=case when datepart(M,b.升职日期)=1 then 1月 else 0 end,
2月=case when datepart(M,b.升职日期)<=2 then 2月 else 0 end,
3月=case when datepart(M,b.升职日期)<=3 then 3月 else 0 end,
4月=case when datepart(M,b.升职日期)<=4 then 4月 else 0 end,
5月=case when datepart(M,b.升职日期)<=5 then 5月 else 0 end,
6月=case when datepart(M,b.升职日期)<=6 then 6月 else 0 end,
7月=case when datepart(M,b.升职日期)<=7 then 7月 else 0 end,
8月=case when datepart(M,b.升职日期)<=8 then 8月 else 0 end,
9月=case when datepart(M,b.升职日期)<=9 then 9月 else 0 end,
10月=case when datepart(M,b.升职日期)<=10 then 10月 else 0 end,
11月=case when datepart(M,b.升职日期)<=11 then 11月 else 0 end,
12月=case when datepart(M,b.升职日期)<=12 then 12月 else 0 end
from #emp_temp6 a inner join
(select 姓名,max(升职日期) '升职日期' from #emp_temp6 group by 姓名)b
on a.姓名=b.姓名 and a.升职日期=b.升职日期update #emp_temp6
set
1月=case when datepart(M,b.升职日期2)>1 then 1月 else 0 end,
2月=case when datepart(M,b.升职日期2)>2 then 2月 else 0 end,
3月=case when datepart(M,b.升职日期2)>3 then 3月 else 0 end,
4月=case when datepart(M,b.升职日期2)>4 then 4月 else 0 end,
5月=case when datepart(M,b.升职日期2)>5 then 5月 else 0 end,
6月=case when datepart(M,b.升职日期2)>6 then 6月 else 0 end,
7月=case when datepart(M,b.升职日期2)>7 then 7月 else 0 end,
8月=case when datepart(M,b.升职日期2)>8 then 8月 else 0 end,
9月=case when datepart(M,b.升职日期2)>9 then 9月 else 0 end,
10月=case when datepart(M,b.升职日期2)>10 then 10月 else 0 end,
11月=case when datepart(M,b.升职日期2)>11 then 11月 else 0 end,
12月=case when datepart(M,b.升职日期2)>12 then 12月 else 0 end
from #emp_temp6 a inner join
(select 姓名,min(升职日期) '升职日期',max(升职日期) '升职日期2' from #emp_temp6 group by 姓名)b
on a.姓名=b.姓名 and a.升职日期=b.升职日期select * from #emp_temp6