2016-09-19 52 views
0

我想創建一個存儲的過程,將動態地添加與今天的日期列。原因是因爲我每天都會爲每個項目獲得一個新計數的新文件。他們希望白天保持運行的歷史總數。這是我認爲我可以做到這一點的唯一方法,除非你們中有人對此模式設計有任何建議。謝謝。動態添加列與今天的日期

+0

'插入到表中的值(COL1,COL2,GETDATE())'?需要你的更多細節。 – artm

+0

爲什麼不只是每天添加一行,並將日期作爲一列並將總數作爲另一列來運行? –

+0

你也許可以用一個標準化的桌子和一個支點查詢 – Paparazzi

回答

1

這裏是您的疑問:

IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[usp_AddCollumByDate]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) 
DROP PROCEDURE usp_AddCollumByDate 
GO 

create procedure usp_AddCollumByDate 
as 
begin 
    declare @sql varchar(max); 
    declare @toDay varchar(20)=CONVERT(varchar(10),GETDATE(),112); 
    set @sql = 'ALTER TABLE MyTable ADD D' + @toDay + ' varchar(max); ' 
    print @sql 
    EXECUTE(@sql); 
end 

exec usp_AddCollumByDate 

它每天都會添加列(今天的例子及其附加):

ALTER TABLE MyTable ADD D20160920 varchar(max); 

現在你仔細聽:

  1. 我已添加Letter D在今天的日期之前。這是因爲 20160920是一個INVALID列名稱。你必須以字母開頭的列 (例如AN3,A33 ...)
  2. 我用這給日期yyyymmdd風格112,你 不能使用1111110和一些其他的風格因爲它給出日期 與-mm-dd-yyyy它是一個INVALID列名稱。您 不能在列名稱中使用-Here is more style,嘗試 使用yyyymmddyymmdd風格