有字段t300_1
t300_2
t300_3
t300_4
t300_5
t300_6
t300_7
t300_8
t300_9
t300_10
t300_11
t300_12
t300_13
设置变量@dept
set @dept=1
select 't300_'+@dept系统认为是否等同于@t300_1这个字段??请教。
t300_2
t300_3
t300_4
t300_5
t300_6
t300_7
t300_8
t300_9
t300_10
t300_11
t300_12
t300_13
设置变量@dept
set @dept=1
select 't300_'+@dept系统认为是否等同于@t300_1这个字段??请教。
--try
exec('
declare @dept int
set @dept=1
select ''t300_''+@dept')
declare @dept int
set @dept=1
select ''t300_''+ltrim(@dept)')
/*
-----------------
t300_1*/
declare @sql varchar(8000),@i int
select @sql='select ',@i=1
while @i<=30
begin
set @sql=@sql+'t300_'+ltrim(@i)+','+char(10)
set @i=@i+1
end
print left(@sql,len(@sql)-2)+' from tb'
/*
select t300_1,
t300_2,
t300_3,
t300_4,
t300_5,
t300_6,
t300_7,
t300_8,
t300_9,
t300_10,
t300_11,
t300_12,
t300_13,
t300_14,
t300_15,
t300_16,
t300_17,
t300_18,
t300_19,
t300_20,
t300_21,
t300_22,
t300_23,
t300_24,
t300_25,
t300_26,
t300_27,
t300_28,
t300_29,
t300_30 from tb
*/
declare @max_day int --每个月最大天数
declare @dept int
declare @date nvarchar --把年月连起来
select @dept=1if @month<10
select @date=cast(@year as nvarchar)+'0'+cast(@month as nvarchar)
else
select @date=cast(@year as nvarchar)+cast(@month as nvarchar)select @max_day=cast(datepart(dd,dateadd(m,1,@date+'01')-1) as int)while (@dept<=@max_day)
begin
set cast('t60_'+cast(@dept as nvarchar) as nvarchar)=(select sum(xxx0 from tb group by part )
declare @year int,@month int,@sql varchar(2000)
declare @max_day int --每个月最大天数
declare @dept int
declare @date nvarchar(10) --把年月连起来
select @dept=1
set @year=2010
set @month=6if @month<10
select @date=cast(@year as nvarchar)+'0'+cast(@month as nvarchar)
else
select @date=cast(@year as nvarchar)+cast(@month as nvarchar)select @max_day=cast(datepart(dd,dateadd(m,1,@date+'01')-1) as int)while (@dept<=@max_day)
begin
--这句没看懂 ,k看看是不是这样
set @sql = 'update tb set '+convert(nvarchar(20),'t60_'+cast(@dept as nvarchar))+'=(select sum(xxx0) from tb group by part )'
exec(@sql)
set @dept=@dept+1
end
不知什么时候我也能有这种理解能力。。
那句的意思是语句是错的(只是想表达我的意思写的)。。想实现对字段循环赋值
t300_1=字段值
t300_2=字段值
t300_3=字段值
select 't300_'+@dept查询的时候等同于select 't300_1'
好家伙!SQL里面能在查询的时候直接声明变量???
查询时't300_'+@dept等于't300_1'???