在线求助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' 附近有语法错误。