2017-06-15 63 views
0

我試圖將「星期幾」和「日期」插入表中。表格應包含30天(不包括星期日)。我無法使case語句中的Insert工作。任何幫助將不勝感激。無法獲得Sql語句在Case語句中工作

Declare @StartDate as Date = DateAdd(day,-30,GetDate()) 
Declare @DOW varchar(10) 
Declare @adddaycnt int 
Declare @RecsWrite int 
Set @RecsWrite = 0 
Set @adddaycnt = 0 
While @RecsWrite <= 30 
Begin 
Select @DOW = DateName(dw,DateAdd(dw,@adddaycnt,@startDate)) 
Select Case When @DOW <> 'Sunday' then 
Insert Into temp_ProdSaleInv (ProdDate,DOW) 
Values(
Convert(varchar(10),DateAdd(day, @adddaycnt,@startDate),101), 
DateName(dw,DateAdd(dw, @adddaycnt,@startDate) 
) 
) 
End 

Select Case When @DOW <> 'Sunday' then 
Set @RecsWrite = @RecsWrite + 1 
Set @adddaycnt = @adddaycnt + 1 
Else 
Set @adddaycnt = @adddaycnt + 1 
End 
+1

用IF語句替換您的案例。 –

回答

1

該case語句不會像你編碼。改爲嘗試使用IF

Declare @StartDate as Date = DateAdd(day,-30,GetDate()) 
Declare @DOW varchar(10) 
Declare @adddaycnt int 
Declare @RecsWrite int 
Set @RecsWrite = 0 
Set @adddaycnt = 0 
While @RecsWrite <= 30 
Begin 
Select @DOW = DateName(dw,DateAdd(dw,@adddaycnt,@startDate)) 
IF @DOW <> 'Sunday' 
BEGIN 
Insert Into temp_ProdSaleInv (ProdDate,DOW) 
Values(
Convert(varchar(10),DateAdd(day, @adddaycnt,@startDate),101), 
DateName(dw,DateAdd(dw, @adddaycnt,@startDate) 
) 
) 

END 


IF @DOW <> 'Sunday' 
BEGIN 
    Set @RecsWrite = @RecsWrite + 1 
    Set @adddaycnt = @adddaycnt + 1 
END 
Else 
BEGIN 
    Set @adddaycnt = @adddaycnt + 1 
END 

End