2017-06-14 66 views
1

這應該很簡單,但我不知道爲什麼這不會工作「 我想插入一個日期和星期日除星期日之外的表格如果我除去DOW那麼該語句的工作原理。表應當有30項。無法獲取語句添加日期和道瓊斯

預先感謝任何幫助。

Declare @StartDate as Date = DateAdd(day,-30,GetDate()) 
    Declare @dateCnt as Int 
    Set @dateCnt = 0 
    While @dateCnt <= 30 
    Begin 
    Insert Into temp_ProdSaleInv (ProdDate,DOW) 
    Values(
    Convert(varchar(10),DateAdd(day,@datecnt,@startDate),101), 
    DateName(dw,DateAdd(dw,@datecnt,@startDate) 
    ) 
    Set @dateCnt = @dateCnt + 1 
    End 

感謝您的幫助有時你不能只見樹木不見森林,

我的問題是我現在不希望星期天在桌子上。 case語句和,並得到一個語法錯誤附近的情況下,將與結束 見下

Declare @StartDate as Date = DateAdd(day,-30,GetDate()) 
Declare @dateCnt as Int 
Set @dateCnt = 0 
set @DW1 as String 
While @dateCnt <= 30 
@DW1 = DATENAME(dw, DATEADD(day,@dateCnt, @StartDate)) 
CASE WHEN @DW1 <> 'Sunday' THEN 
Begin 
Insert Into temp_ProdSaleInv (ProdDate,DOW) 
Values(
Convert(varchar(10),DateAdd(day,@datecnt,@startDate),101), 
DateName(dw,DateAdd(dw,@datecnt,@startDate) 
) 
Set @dateCnt = @dateCnt + 1 
END 
End 
+1

你似乎缺少了'集之前結束括號@ datecnt = @datecnt + 1'行 – SchmitzIT

+1

這是非標準的SQL。你正在使用哪個DBMS? –

回答

1

你是缺少一個右括號:

Declare @StartDate as Date = DateAdd(day,-30,GetDate()) 
Declare @dateCnt as Int 
Set @dateCnt = 0 
While @dateCnt <= 30 
Begin 
    Insert Into temp_ProdSaleInv (ProdDate,DOW) 
    Values(
    Convert(varchar(10),DateAdd(day,@datecnt,@startDate),101), 
    DateName(dw,DateAdd(dw,@datecnt,@startDate) 
    )) -- <<<< Here 

    Set @dateCnt = @dateCnt + 1 
End 
+0

@AaronDietz - 同意。我主要想要突出顯示缺少支架的地方。如果我要重新格式化代碼,我肯定會嘗試並確保根據您的建議它會更具可讀性。 – SchmitzIT