Sql concat运算符中的数据类型varchar和int不兼容

Sql concat运算符中的数据类型varchar和int不兼容,sql,asp.net,sql-server-2008-r2,Sql,Asp.net,Sql Server 2008 R2,我在过去的两天里一直被卡住执行它给出错误: concat运算符中的数据类型varchar和int不兼容 这是我的桌子: create table salestable ( id int identity(1,1) not null primary key, empid char(5), datesold date, monthonly varchar(50), amount money ) 此代码将虚拟记录插入到dbo.salestab

我在过去的两天里一直被卡住执行它给出错误:

concat运算符中的数据类型varchar和int不兼容

这是我的桌子:

create table salestable
(
     id int identity(1,1) not null primary key, 
     empid char(5), 
     datesold date, 
     monthonly varchar(50), 
     amount money
)
此代码将虚拟记录插入到
dbo.salestable
中,以便在salestable中工作,调试并单步执行给出调试和理解代码的代码

declare @outercounter int = 1
declare @innercounter int = 1

while @outercounter <= (select count(name) from namestable)
begin 
    while @innercounter <= datediff(day, getdate() -datepart(day, getdate()), {fn concat('12/31/',Datepart(year,getdate()))})
    begin 
        insert into salestable (empid, datesold, monthonly, amount) 
        values (@outercounter, 
                getdate() - datepart(day, getdate()) + @innercounter,
                Datename(month, getdate() - datepart(day, getdate()) + @innercounter),
                rand() * 10000)
        set @innercounter =  @innercounter +1           
    end

    set @outercounter = @outercounter + 1
    set @innercounter = 1
end

select * from dbo.salestable
declare@outercounter int=1
声明@innercounter int=1
而@outercounter

试试这个

如果答案有效,请将其标记为正确。我用反对票来抵消某人的赞成票,因为第一个版本的格式不好,我们不鼓励使用txtspk。请尽可能仔细地写问题——问题越可读、越详细,你就越有可能得到答案。
fn concat('12/31/',CAST(Datepart(year,getdate()) AS VARCHAR(10)))