在线求助SQL

昨天 2011-04-04 07:07:26

SELECT @sql='select 员工编号 ,员工姓名,部门,保险,sum(请假分钟)/480 as 请假天数,case 请假类型 when 1 then ''事假'' when 2 then ''病假'' when 3 then ''产假'' when 4 then ''超假'' when 5 then ''工伤'' when 6 then ''探亲假'' when 7 then ''婚假'' when 8 then ''丧假'' end as 类型,'
SET @d1=right(@日期1,2)
SET @d2=right(@日期2,2)
WHILE @d1<=@d2
BEGIN
SELECT @sql = @sql + 'max(case 日期 when ' + CONVERT(VARCHAR(2),@d1) + ' then ''*'' else null end) [' + CONVERT(VARCHAR(2),@d1) + '],'
SET @d1=@d1+1
END
SELECT @sql=LEFT(@sql,LEN(@sql)-1) + ' from (SELECT 员工编号 ,部门,员工姓名,保险,请假分钟,请假类型, DATENAME(d, 请假开始时间) AS 日期 FROM #t where 请假分钟=480 )a group by 员工编号 ,员工姓名,部门,保险,请假类型 having sum(请假分钟)/480>='+ltrim(@判断请假天数)

EXEC(@sql)

drop table #t 为什么当d1=1 d2=31 这两日期就会出现[Microsoft][ODBC SQL Server Driver][SQL Server]第 1 行: 'sum' 附近有语法错误。
...全文
70 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
昨天 2011-04-05
  • 打赏
  • 举报
回复
非常感谢fanzhouqi,定义@sql变量字符不够长。。。谢谢呢
fanzhouqi 2011-04-04
  • 打赏
  • 举报
回复
你把 d1 =1,d2 = 31 的sql 发出来
昨天 2011-04-04
  • 打赏
  • 举报
回复
没有问题只要我日期不同时出现1同30号就不会有问题
fanzhouqi 2011-04-04
  • 打赏
  • 举报
回复
先print 出来 看看语法是不是有问题
fanzhouqi 2011-04-04
  • 打赏
  • 举报
回复
你的sql 语句确定没问题??

34,587

社区成员

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

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