Nil*_*ish 5 sql-server sql-server-2005 sql-server-2008
create table #temp
(
pName Varchar(20),
DateBegin DateTime,
DateEnd DateTime
)
Insert Into #temp(pName, DateBegin, DateEnd)
Values('Player1', '01/04/2012', '01/05/2012')
Insert Into #temp(pName, DateBegin, DateEnd)
Values('Player2', '02/01/2012', '02/05/2012')
With DateRange(dt) As
(
Select Convert(Datetime, '01/01/2012')
UNion All
Select DateAdd(dd, 1, Dat.dt) From DateRange Dat Where Dat.dt < CONVERT(Datetime, '01/31/2012')
)
Select T.pName, Dt.dt from #temp T
Inner Join DateRange Dt on Dt.dt BETWEEN T.DateBegin and T.DateEnd
Drop Table #temp
Run Code Online (Sandbox Code Playgroud)
问题在于以下代码行
With DateRange(dt) As
Run Code Online (Sandbox Code Playgroud)
它显示以下错误消息
关键字'with'附近的语法不正确.如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则必须以分号终止先前的语句.
添加一些分号:
create table #temp
(
pName Varchar(20),
DateBegin DateTime,
DateEnd DateTime
)
Insert Into #temp(pName, DateBegin, DateEnd)
Values('Player1', '01/04/2012', '01/05/2012')
Insert Into #temp(pName, DateBegin, DateEnd)
Values('Player2', '02/01/2012', '02/05/2012');
With DateRange(dt) As
(
Select Convert(Datetime, '01/01/2012')
UNion All
Select DateAdd(dd, 1, Dat.dt) From DateRange Dat Where Dat.dt < CONVERT(Datetime, '01/31/2012')
)
Select T.pName, Dt.dt from #temp T
Inner Join DateRange Dt on Dt.dt BETWEEN T.DateBegin and T.DateEnd;
Drop Table #temp
Run Code Online (Sandbox Code Playgroud)
http://sqlfiddle.com/#!6/06e89
编辑:另外,你实际上没有问题.您是否安装了一个插件,可以自动将输出从SQL Server Mangement Studio错误日志传递到StackOverflow问题?:)