簡體   English   中英

無法使Sql語句在Case語句中工作

[英]Can't get Sql Statement to work in a Case Statement

我正在嘗試將日期和星期幾插入表中。 該表應包含30天(星期日除外)。 我無法使case語句中的Insert起作用。 任何幫助將不勝感激。

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

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

CASE語句評估條件列表,並返回多個可能的結果表達式之一。

相反,您嘗試在CASE語句中實際運行CRUD語句。

因此,請使用類似IF條件的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM