Create Proc GetDays
@YearNo Int,
@MonthNo Int,
@Date varchar(10)
AS
SET NOCOUNT ON
Declare @FirstDay varchar(10),@LastDay varchar(10)
Begin
Select @Date = @YearNo + '-' + @MonthNo + '-' + '01'
Select @FirstDay = DATEADD(m, DATEDIFF(m,0,@Date), 0)
Select @LastDay = DATEADD(ms,-3,DATEADD(mm, DATEDIFF(m,0,@Date)+1, 0))
Select HouseNo,RoomNo,EmpNo,case Days when (datediff(dd,InDate,@FirstDay)/*这错*/ >= 0) and (OutDate is null) then datediff(dd,@FirstDay,@LastDay)
when datediff(dd,InDate,@FirstDay) >= 0 and OutDate is not null then datediff(dd,@FirstDay,OutDate)
when datediff(dd,InDate,@FirstDay) < 0 and OutDate is null then datediff(dd,InDate,@LastDay)
when datediff(dd,InDate,@FirstDay) < 0 and OutDate is not null then datediff(dd,InDate,OutDate)
From TB_EmpRoom Where @YearNo group HouseNo,RoomNo,EmpNo
End;服务器: 消息 170,级别 15,状态 1,过程 GetDays,行 12
第 12 行: '>' 附近有语法错误。
啥意思?
WHEN ... THEN ..
WHEN.. THEN..
ELSE..--可选
END
Create Proc GetDays
@YearNo Int,
@MonthNo Int,
@Date varchar(10)
AS
SET NOCOUNT ON
Declare @FirstDay varchar(10),@LastDay varchar(10)
Begin
Select @Date = @YearNo + '-' + @MonthNo + '-' + '01'
Select @FirstDay = DATEADD(m, DATEDIFF(m,0,@Date), 0)
Select @LastDay = DATEADD(ms,-3,DATEADD(mm, DATEDIFF(m,0,@Date)+1, 0))
Select HouseNo,RoomNo,EmpNo,case when (datediff(dd,InDate,@FirstDay) >= 0) and (OutDate is null) then datediff(dd,@FirstDay,@LastDay)
when datediff(dd,InDate,@FirstDay) >= 0 and OutDate is not null then datediff(dd,@FirstDay,OutDate)
when datediff(dd,InDate,@FirstDay) < 0 and OutDate is null then datediff(dd,InDate,@LastDay)
when datediff(dd,InDate,@FirstDay) < 0 and OutDate is not null then datediff(dd,InDate,OutDate)
end
From TB_EmpRoom group by HouseNo,RoomNo,EmpNo,InDate,OutDate
End;
这样创建成功了, 我需要的天数怎么保存呢, 就是每个then 后面的datediff函数取得的结果