【发布时间】:2014-11-12 09:53:17
【问题描述】:
我想创建一个列名称为Members_2014 和Spend_2014 的表。我尝试将年份设置为变量并连接Member_ + @year,以便@year 减少,但我编写的代码似乎不起作用:
declare @li_year int
declare @li_year2 int
declare @li_year3 int
declare @li_year4 int
declare @li_year5 int
set @li_year = datepart(year, GETDATE())
set @li_year2 = @li_year-1
set @li_year3 = @li_year-2
set @li_year4 = @li_year-3
set @li_year5 = @li_year-4
drop table [scratchdb].[dbo].results_test
create table [scratchdb].[dbo].results_test (RDesc varchar(30),
'Members_' + @li_year int,
'Spend_' + @li_year money,
'Members_' + @li_year2 int,
'Spend_' + @li_year2 money,
'Members_' + @li_year3 int,
'Spend_' + @li_year3 money,
'Members_' + @li_year4 int,
'Spend_' + @li_year4 money,
'Members_' + @li_year5 int,
'Spend_' + @li_year5 money)
【问题讨论】:
-
对于大多数查询处理(现在您可能不需要全部作为动态 SQL 执行),然后在您实际向用户呈现数据的位置应用实际年份名称。
标签: tsql sql-server-2012 dynamic-sql create-table