设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: zyp
打印 上一主题 下一主题

[其它] [求助]请SQL高手相助:不用自定义函数,如何计算员工每月的请假天数(已解决)

[复制链接]
21#
 楼主| 发表于 2005-11-8 22:38:00 | 只看该作者
以下是引用eyewitnes在2005-11-8 10:17:00的发言:









SELECT 子句错误:'>' 附近的表达式。

SELECT 子句错误:'FROM' 附近的表达式。

丢失 FROM 子句。

无法对查询文本做语法分析。







不行呢SQL2000中通不过





海狸版主的代碼我在SQL 7.0中也沒通過,提示與你的差不多.

謝謝海狸版主,你所寫的表達式太高深了,我看不太明白(如整數*日期是什麼),能不能注解一下,或許順著你的思路,在adp中變通一下,就能實現目的了.

謝謝!

[此贴子已经被作者于2005-11-8 16:40:07编辑过]

22#
 楼主| 发表于 2005-11-9 05:38:00 | 只看该作者
在SQL中,不支持用日期*数字,报告数据类型不同不可以进行这样的操作
23#
发表于 2005-11-9 06:05:00 | 只看该作者
'日期其实就是 数字 如 2005-10-1就是38636SELECT 员工, sum(

(结束日期>#10/31/2005#)     '大于则为1,否则为0

*#10/31/2005#

+

(结束日期<=#10/31/2005#) '大于则为0,否则为1 ,结合一下,可以推出结果

*结束日期

-

(起始日期<#10/1/2005#)

*#10/1/2005#

-

(起始日期>=#10/1/2005#)

*起始日期

+1)

FROM Sheet1 GROUP BY 员工;
24#
发表于 2005-11-9 18:44:00 | 只看该作者
现在看来,好像是只能在触发器或者存储过程才支持比较运算。。视图中不支持?应该不可能吖。。是不是我们的语法搞错了??
25#
发表于 2005-11-9 18:50:00 | 只看该作者
存储过程是通过了,不过如果用存储过程的话,我想在表里边增加一个字段记录实际请假天数,用触发器来刷新可能会更好
26#
 楼主| 发表于 2005-11-10 07:23:00 | 只看该作者
以下是引用海狸先生在2005-11-8 22:05:00的发言:



'日期其实就是 数字 如 2005-10-1就是38636

谢谢海狸版主,在ADP中好像不支持这个算法。
27#
 楼主| 发表于 2005-11-10 07:25:00 | 只看该作者
以下是引用eyewitnes在2005-11-9 10:50:00的发言:

存储过程是通过了,不过如果用存储过程的话,我想在表里边增加一个字段记录实际请假天数,用触发器来刷新可能会更好

直接用计算字段不行吗?
28#
发表于 2005-11-12 18:24:00 | 只看该作者
计算字段?
29#
发表于 2005-11-12 18:31:00 | 只看该作者
CREATE PROCEDURE dbo.ABC



    @Month as int

AS



BEGIN



Declare @Start as smalldatetime  -- '10/01/2005'

Declare @End  as smalldatetime   -- '11/01/2005'



SET @Start = Cast((cast(@Month as char(2)) + '/01/' + year(getdate())) as smalldatetime)

SET @Start = Cast((cast((@Month+1) as char(2)) + '/01/' + year(getdate())) as smalldatetime)



SELECT 姓名 ,

DATEDIFF(day,

CASE 起始日期

  when 起始日期>=@End  then @End

  when 起始日期<@Start  then @Start

  Else 起始日期

END

,

CASE 结束日期

  when 结束日期>=@End  then @End

  when 结束日期<@Start  then @Start

  Else 结束日期

END

)

AS 请假日期

FROM 表名



END



-- 如果是五天工作制,还要考虑消除周末

原帖来自于网易社区:http://p5.club.163.com/viewArticleByWWW.m?boardId=database&articleId=database_1075e61c



抄回来得7444390   以上均为抄袭,呵呵

[此贴子已经被作者于2005-11-12 11:03:35编辑过]

30#
发表于 2005-11-12 20:01:00 | 只看该作者
好象忘了一件小事.  那就是          ACCESS中   日期是     #  开头 和 结尾.     SQL中  是以  '  开头结尾.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-11 04:04 , Processed in 0.087181 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表