使用所选参数创建一个表作为表标题SQL

eug*_*220 0 sql sql-server sql-server-2008

我当前的代码如下所示(不起作用).我想创建一个表格,其标题为cor_ @ dt,其中@dt是所选日期参数(在本例中为2013年8月14日)

USE [dWA_NSCC]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- exec [CORP\Eng].[No_Indx] '8/14/2013', '1'
ALTER PROCEDURE [CORP\Eng].[No_Indx]
    (@dt datetime, @numb int)
AS
BEGIN

DROP TABLE @dt
CREATE TABLE @dt
(
ticker varchar(50),
no_indx_cusip varchar(50),
benchmark_cusip varchar(50),
maxcor decimal(10,5),
regcoef decimal(10,5),
dt_pnts int
)


 ... some more code
Run Code Online (Sandbox Code Playgroud)

Aar*_*and 7

好吧,暂时忘记这闻起来非常非常糟糕,这段代码会创建一个名为的表08/14/2013.cor.请注意,在引用它的所有代码中,因为它以数字开头包含错误字符,所以您必须使用[square brackets]该名称.

DECLARE @sql NVARCHAR(MAX);

SET @sql = N'CREATE TABLE ' + QUOTENAME(CONVERT(CHAR(10), @dt, 101) + '.cor') 
  + '
  (
    ticker varchar(50),
    ...
  );';

EXEC sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)

一个更好的设计是使一个表有一个额外的列(可能作为聚集索引)然后你可以插入你的压力测试信息一天,那天的查询可以来自同一个表查询另一天.

  • @Declan_K你只能对人们说得那么有意义.有时这只是要求,他们也无法对抗它. (3认同)