找回密码
 立即注册

QQ登录

只需一步,快速开始

cg6207 悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2021-7-19 16:04  /   查看:1844  /  回复:7
1金币




如图,我有一个合同表,想求出人员最后一份合同对应的入职日期
比如张三最后一份合同号是35,每份合同的开始和上一份合同的截止日期相差小于10天视为延续,倒推上去是入职的合同编号是28

请问怎么写视图啊
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

这种不建议视图搞,视图的难点在于获取上一轮合同ID,建议服务端命令或者存储过程,

7 个回复

倒序浏览
最佳答案
最佳答案
猫耳朵悬赏达人认证
中级会员   /  发表于:2021-7-19 16:04:55
来自 5#
这种不建议视图搞,视图的难点在于获取上一轮合同ID,建议服务端命令或者存储过程,
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-7-19 17:12:25
2#
老哥,您这个是要根据合同只要这一份的开始日期和前一份的截止日期小于10天的话,
就要无限往前面找,涉及到了不定循环数,感觉视图不一定能做,
也可能是我才疏学浅,搞不好有SQL大神能做出来,
我觉得这个用服务端命令,循环每一个人来找也许有搞头,看看其他大神的高见
回复 使用道具 举报
cg6207悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2021-7-20 10:31:36
3#
苦恼了几天,求大神
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-7-20 18:21:21
4#
cg6207 发表于 2021-7-20 10:31
苦恼了几天,求大神

大佬,看见你苦恼我也难受鸭~SQL确实不好搞,你看用服务端命令可以接受不,目前可以做到的是,你给我合同ID为35这条数据,可以通过服务端命令,根据你的描述去写逻辑返回ID28,你看可以满足你的需求不?要是可以的话,麻烦大佬上传一个带数据的工程,我根据工程给你讲一下要怎么做,你看可以不?
回复 使用道具 举报
cg6207悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2021-7-21 10:46:07
6#
本帖最后由 cg6207 于 2021-7-21 10:48 编辑

我经过冥思苦想,我做出来了
思路是这样的:1、首先用Row_number 把人员按时间排序,生成ID号;
2、再得出每份合同的上一份合同,并且判定是不是延续;
3、筛选出每个人的非延续合同;
4、通过MAX算出每个人非延续合同最大的ID号,就是入职日期了。

稳得一笔
回复 使用道具 举报
cg6207悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2021-7-21 10:49:34
7#
猫耳朵 发表于 2021-7-20 20:52
这种不建议视图搞,视图的难点在于获取上一轮合同ID,建议服务端命令或者存储过程,

这个不难。
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-7-21 10:52:10
8#
cg6207 发表于 2021-7-21 10:46
我经过冥思苦想,我做出来了
思路是这样的:1、首先用Row_number 把人员按时间排序,生成ID号;
2、再得出 ...

大佬厉害鸭~
恭喜楼主解决了问题,并且还主动分享~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部