排序更新问题

xs0573 2012-04-16 04:51:40
之前做了个更新程序:

update 考勤表 set 考勤表.bc2 = 调班表.bc,考勤表.blb = case when 调班表.blb >0 then 调班表.blb end from 调班表 inner join 考勤表 on 调班表.ny = 考勤表.ny
and 调班表.xm = 考勤表.xm where 考勤表.ny = @ny and 考勤表.rq >= 调班表.rq1 and 考勤表.rq <= 调班表.rq2

后来发现,需要按照调班表里面的输入时间rq 升序更新
请问如何实现比较有效率
目前的sql 版本是2000
谢谢
...全文
75 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xs0573 2012-04-16
  • 打赏
  • 举报
回复
谢谢
UPDATE b
SET b.bc2 = a.bc ,
b.blb = a.blb
FROM 调班表 AS a
INNER JOIN 考勤表 as b ON a.ny = b.ny
AND a.xm = b.xm
WHERE b.ny = @ny
AND a.rq=(SELECT TOP 1 rq FROM 调班表 WHERE ny=b.ny AND xm=b.xm AND b.rq>=rq1 AND b.rq<=rq2 ORDER BY rq1)
这样就比较接近了,晚上回去再试试 =。=
中国风 2012-04-16
  • 打赏
  • 举报
回复
UPDATE  b
SET b.bc2 = a.bc ,
b.blb = a.blb
FROM 调班表 AS a
INNER JOIN 考勤表 as b ON a.ny = b.ny
AND a.xm = b.xm
WHERE b.ny = @ny
AND a.rq1=(SELECT TOP 1 rq1 FROM 调班表 WHERE ny=b.ny AND xm=b.xm AND b.rq>=rq1 AND b.rq<=rq2 ORDER BY rq1 desc)

楼主测试一下结果
xs0573 2012-04-16
  • 打赏
  • 举报
回复
调班表数据
ny dh rq xm rq1 rq2 bc blb bz
1203 1 2012-3-13 14:43:52 陈加宙 2012-3-8 2012-3-8 11 0
1203 1 2012-3-13 14:44:14 陈加宙 2012-3-8 2012-3-8 11 3
1203 1 2012-3-13 14:51:06 陈加宙 2012-3-9 2012-3-9 11 0
1203 1 2012-3-13 14:51:27 陈加宙 2012-3-9 2012-3-9 11 3
如果按照之前的做法更新,陈加宙 3月9日的班类别blb 可能就是3了
如果按照输入时间rq排序后更新就没有问题
中国风 2012-04-16
  • 打赏
  • 举报
回复
后来发现,需要按照调班表里面的输入时间rq 升序更新?

--------
能列出点数据看看么?

34,590

社区成员

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

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