免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3589 | 回复: 11
打印 上一主题 下一主题

求函数统计某月的计薪日 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-28 14:20 |只看该作者 |倒序浏览
公司下月进行工资结构调整
日工资从原来的 基本工资/20.92  变为   基本工资/计薪日

计薪日指每月除去双休日的天数
如2006年2月总天数为28天,双休日天数为8天,计薪日就是28-8=20
   2006年3月总天数为31天,双休日天数为8天,计薪日就是31-8=23

这个题目可难到我了,网上查了一下有一个计算某月有多少天的MS-SQL函数
http://edu.chinaz.com/Get/Databa ... 101445312948999.asp

仔细想过了,可以做个PROCEDURE用游标来实现
哪位大哥能用函数实现呢?

再如果每个月的计薪范围为上个月的26日至本月的25日,又是怎么弄呢?

论坛徽章:
0
2 [报告]
发表于 2006-02-28 16:23 |只看该作者
select count(*) from (select rownum-1 rnum from all_objects where rownum<=to_date('2006-02-01','yyyy-mm-dd')- to_date('2006-01-01','yyyy-mm-dd')) where to_char(to_date('2006-01-01','yyyy-mm-dd')+rnum-1,'DAY') not in ('星期六','星期日');

论坛徽章:
0
3 [报告]
发表于 2006-02-28 16:46 |只看该作者
原帖由 txfy 于 2006-2-28 16:23 发表
select count(*) from (select rownum-1 rnum from all_objects where rownum<=to_date('2006-02-01','yyyy-mm-dd')- to_date('2006-01-01','yyyy-mm-dd')) where to_char(to_date('2006-01-01','yyyy-mm-dd') ...


pfpf

论坛徽章:
0
4 [报告]
发表于 2006-02-28 19:47 |只看该作者
高人。。。

论坛徽章:
0
5 [报告]
发表于 2006-03-01 08:51 |只看该作者
LZ要求是只去掉双休日,可是一般来说国定假日也应该去掉的吧?!

所以我建议,建一个表
  1. desc calendar
  2. work_date date not null
  3. vacation number(1) not null
复制代码

在表中设定每一天,是工作日还是休假日
根据LZ的需求,只是这样就可以了
  1. select count(*) from calendar
  2. where vacation = 0
  3.    and work_date between to_date(20060126,'yyyymmdd') and to_date(20060225,'yyyymmdd')
复制代码


这样的设定的好处是:自由度比较大,以后有变化的话,只要修改calendar中的数据即可.

[ 本帖最后由 doni 于 2006-3-1 08:54 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-03-01 08:53 |只看该作者
大师,好想拜你为师啊!

论坛徽章:
0
7 [报告]
发表于 2006-03-01 09:12 |只看该作者
LZ是在开发HR方面的系统吧?
2-3年两前,我也做过,太痛苦了,各种奇怪的要求太多了,写出来的程序,逻辑超复杂
后来,公司也觉得用HR系统,工作量好象比纯人工的工作量还大,就中止了这个CASE
主要是,各种特例太多,系统处理后,还是要大量人工介入,原来人工做一遍变成系统做一遍后,人工再过一遍

上面关于日期计算也是当时的产物

[ 本帖最后由 doni 于 2006-3-1 09:15 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-03-01 09:29 |只看该作者
晕……

论坛徽章:
0
9 [报告]
发表于 2006-03-01 10:29 |只看该作者
txfy    的功底很精湛
doni   以前公司肯定人不多,这里3千多人可不能人工做
本人工作后就接触HR软件,烦是烦,没办法,为了全厂的工人啊,发不出要被几千人砍的。
doni  的做法其实系统里很容易办到,因为本来就有calendar这个表,但派其他用处的
但我还是用了txfy大师的做法,经典!!!
多向大师学习

论坛徽章:
0
10 [报告]
发表于 2006-03-01 11:52 |只看该作者
已经有calendar这个表,就更好了,即使用txfy的方法,也不需借用all_objects的rownum了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP