根据一张表的数据更新另一张表数据

黄瓜黄瓜 2011-10-13 11:26:23

第一张表
----id----in1----out1----in2---out2---in3---ou3---in4---out4---in5---out5--
----1----null----null----null---null---null---null---null---null---null---null--
----2----null----null----null---null---null---null---null---null---null---null--
----3----null----null----null---null---null---null---null---null---null---null--
----4----null----null----null---null---null---null---null---null---null---null--
----5----null----null----null---null---null---null---null---null---null---null--
----6----null----null----null---null---null---null---null---null---null---null--
----7----null----null----null---null---null---null---null---null---null---null--
第二张表
----id----att_date-----InOrOut-
----1----2011-09-09-----in-
----2----2011-09-09-----out-
----3----2011-09-09-----out-
----4----2011-09-09-----out-



第一张表和第二张表的ID关联,
用第二张表的进出记录 更新第一张表的 进出记录,批量一次将第一张表的所有数据全部更新...

...全文
168 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
蝈蝈(GuoGuo) 2011-10-13
  • 打赏
  • 举报
回复
你用的是SQL2005还是?如果用SQL2005有一个行转列的。
如果不是自己写一个就行了。
看你这个记录应该是考勤的。你那个日期应该有时分秒的。
----id----att_date-----InOrOut-
----1----2011-09-09-----in-
----2----2011-09-09-----out-
----3----2011-09-09-----out-
----4----2011-09-09-----out-
可以用以下语句
select id,att_date,inorout,idd=identity(int,1,1)
into #t
from t2

select t1.id,
in1=Max(case when t1.idd-t2.idd+1=1 and t1.inorout='in' then t1.att_date else null end)
out1=Max(case when t1.idd-t2.idd+1=1 and t1.inorout='Out' then t1.att_date else null end),
in2=Max(case when t1.idd-t2.idd+1=2 and t1.inorout='in' then t1.att_date else null end)
out2=Max(case when t1.idd-t2.idd+1=2 and t1.inorout='Out' then t1.att_date else null end)
......
from #t t1 inner join

(select id,idd=min(idd)
from #t group by id
group by id) t2 on t1.id=t2.id
group by t1.id

看你最多显示多少列了。按这个就可以得到表1的结果。要更新要信你会的。
黄瓜黄瓜 2011-10-13
  • 打赏
  • 举报
回复

第一张表存的是每个人的每一天的进出,比如OUT4 代表进出两次..打卡时间在第二张表中..
比如一天有8次进出
while(@index<=8)
begin
更新第一张表的in1 根据第二张表的ID和时间还有InOrOut='in'(进出标示)top 1 更新in1

删除 top1的数据

然后在更新out1 继续top 1
删除 top1数据
直到更新到第8对 结束
end

--小F-- 2011-10-13
  • 打赏
  • 举报
回复
in1,in2..这个是怎么判定的?对应下面表的哪里?难道是依次更新?
pengxuan 2011-10-13
  • 打赏
  • 举报
回复
怎么更新
NBDBA 2011-10-13
  • 打赏
  • 举报
回复
结果?
这么多字段,说下更新就更新了?
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 ### 中兴F420/F460/F660光猫超级密码配置及功能启用指南 #### 一、超级密码的获取与配置 对于中兴F420/F460/F660系列光猫设备,可以通过特定的命令行接口方法来获取并配置超级密码。以下指南详细说明了这一过程的实现方法。 **步骤1:** 启动任意一种网络浏览器,并键入网址`http://192.168.1.1/web_shell_cmd.gch`以进入命令行操作界面。 **步骤2:** 输入指令`sendcmd1DBpUserInfo`(需注意指令间的空格和大小写格式),该指令用于查询当前登录所使用的用户名及密码。通常情况下,预设的用户名与密码为`telecomadmin/telecomadmin+数字`。 **步骤3:** 如果需要变更用户名,可以在命令行环境中键入`sendcmd1DBsetUserInfo0Usernameadmin`(同样需注意空格和大小写),将用户名更改为`admin`。 **步骤4:** 继续输入`sendcmd1DBsetUserInfo0Passwordadmin`(同样需注意空格和大小写),将密码也设定为`admin`。 **步骤5:** 完成修改后,必须执行保存操作,通过输入命令`sendcmd1DBsave`(注意空格和大小写),以最终确认设置。 #### 二、远程控制功能的禁用 为了保障网络安全,防止未经授权的远程访问,应按照以下步骤禁用远程控制功能: **步骤1:** 再次启动网络浏览器并输入网址`http://192.168.1.1/web_shell_cmd.gch`。 **步骤2:** 键入指令`se...

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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