Foxtable(狐表)用户栏目专家坐堂 → 【求助】遍历表取整


  共有396人关注过本帖树形打印复制链接

主题:【求助】遍历表取整

帅哥哟,离线,有人找我吗?
狐表(小白)
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:208 积分:2015 威望:0 精华:0 注册:2019/9/17 10:06:00
【求助】遍历表取整  发帖心情 Post By:2020/10/11 20:51:00 [只看该作者]

老师,如下图,有没有什么办法通过遍历当前表,当第一列计算出来的数值大于3000时开始执行代码,达到如同第二列那样的取整。第一列数值类型是整数。
比如:当第一列计算的结果在3000<数值<=3100之间,数值结果是3100;
         当第一列计算的结果在3100<数值<=3200之间,数值结果是3200;
         当第一列计算的结果在3200<数值<=3300之间,数值结果是3300;
         ......
         依次类推,每大于100取值范围不一样,无上限,如何实现?

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2020/10/11 20:52:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:60969 积分:309034 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/11 21:20:00 [只看该作者]

Dim i As Integer = 3101
Dim k As Integer = math.Ceiling(i/100) * 100
msgbox(k)

 回到顶部
帅哥哟,离线,有人找我吗?
狐表(小白)
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:208 积分:2015 威望:0 精华:0 注册:2019/9/17 10:06:00
  发帖心情 Post By:2020/10/13 9:16:00 [只看该作者]

可以了,谢谢老师!再问一个问题,SQL server 2008 支持IIF函数吗?


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:60969 积分:309034 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/13 9:18:00 [只看该作者]

不支持,好像是SQL server 2012才开始支持。SQL server 2008使用case when即可:http://www.foxtable.com/webhelp/topics/1827.htm

 回到顶部
帅哥哟,离线,有人找我吗?
狐表(小白)
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:208 积分:2015 威望:0 精华:0 注册:2019/9/17 10:06:00
  发帖心情 Post By:2020/10/13 10:05:00 [只看该作者]

谢谢!当"车间"列同时满足所有条件时,取得是最后一个条件值还是第一个?如果取得是最后一个条件值,如何达到类似IF语句多分支形式那样只取满足第一个条件值?
case 
   when 车间 like '木工车间' then '木工车间' 
   when 车间 like '底漆车间' then '底漆车间'
   when 车间 like '打磨车间' then '打磨车间'
   when 车间 like '面漆车间' then '面漆车间'
   when 车间 like '包装车间' then '包装车间'
Else ''
END

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:60969 积分:309034 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/13 10:19:00 [只看该作者]

同时满足所有条件时,按顺序取符合条件的第一个。

 回到顶部
帅哥哟,离线,有人找我吗?
狐表(小白)
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:208 积分:2015 威望:0 精华:0 注册:2019/9/17 10:06:00
  发帖心情 Post By:2020/10/13 14:20:00 [只看该作者]

谢谢!还要麻烦老师给看看狐表执行下面上传的SQL数据库存储过程,更新PMC主计划表后的结果,两个车间的承诺期为什么都是10-15,而不是木工车间承诺期是10-05底漆车间承诺期是10-09?取的都是工序承诺期的最大日期,车间判断条件没起作用一样,存储过哪个地方条件写的不对?谢谢啦!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:存储过程.txt


图片点击可在新窗口打开查看此主题相关图片如下:生产工piao明细表.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:pmc主计划.png
图片点击可在新窗口打开查看



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:60969 积分:309034 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/13 14:27:00 [只看该作者]

casewhen一般不用在条件里,这用法明显没有什么用,而且多余。

ALTER PROCEDURE [dbo].[抛转主计划]
@订单编号  nvarchar(30) 
AS
BEGIN
UPDATE [dbo].[PMC_主计划]
SET [木工车间_承诺期] = (select MAX(工序承诺期) from [dbo].[SC_生产工piao明细] where [车间]= '木工车间'  and ISNULL([非计划工序],'') = 0 and 订单编号=@订单编号 and 订单_结案否 = 'N')
   ,[底漆车间_承诺期] = (select MAX(工序承诺期) from [dbo].[SC_生产工piao明细] where [车间]= '底漆车间' and ISNULL([非计划工序],'') = 0 and 订单编号=@订单编号 and 订单_结案否 = 'N')
   where 订单编号=@订单编号 and 订单_结案否 = 'N'
End

 回到顶部
帅哥哟,离线,有人找我吗?
狐表(小白)
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:208 积分:2015 威望:0 精华:0 注册:2019/9/17 10:06:00
  发帖心情 Post By:2020/10/13 14:41:00 [只看该作者]

车间列的几个车间不是固定的,有时有1个。有时2个。有时3个,有时4个,有时都有,之前的存储过程和你写的一样,满足不了要求。才加的车间判断。

[此贴子已经被作者于2020/10/13 14:42:17编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:60969 积分:309034 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/13 14:45:00 [只看该作者]

没看懂。设置的是[木工车间_承诺期],直接获取[车间]= '木工车间' 的值就可以啊,和有几个车间有什么关系?!

难道 '木工车间'没有值的时候就取其它车间的最大值作为[木工车间_承诺期]?

 回到顶部
总数 13 1 2 下一页