我需要用简单的(年,月,日)列填充表格长达10年,我大致每个月都要有30天。看起来如下所示。
我已经编写了下面的代码来填充表格,但我在第二个'时遇到了错误。它说'期待'('或选择'。任何线索为什么?
declare @month varchar(20)
set @month ='1'
declare @day varchar(20)
set @day='1'
declare @sql nvarchar(1000)
while(@Year <=10)
(
while(@month<=12)
(
while(@day<= @day+30)
(
insert into simple_table values(@Year,@month,@day)
@day=@day+1
)
@month+1
)
@year = @year+1
)
)
答案 0 :(得分:1)
借助 ad-hoc统计表和交叉加入(或两个)
您的样本有点不清楚。这假设Day列不是1-30而是1-3600 10年。我假设你正在建立某种30/360的摊销计划
Select Year = 'Year'+cast(Y as varchar(25))
,Month = M
,Day = Row_Number() over (Order by Y,M,D)
From (Select Top (10) Y=Row_Number() Over (Order By (Select NULL)) From master..spt_values) Y
Cross Join (Select Top (12) M=Row_Number() Over (Order By (Select NULL)) From master..spt_values) M
Cross Join (Select Top (30) D=Row_Number() Over (Order By (Select NULL)) From master..spt_values) D
<强>返回强>
答案 1 :(得分:0)
似乎使用一个循环代替3会容易得多。
TransferSpreadhseet
基本上,只需使用日期作为循环变量,每次循环增加一天。额外的好处是,您可以获得每月正确的天数(包括闰年)。