0
我曾與列的SQL Server表:無論如何根據當前年份動態添加SQL Server表中的列?
target_2011, target_2012, target_2013, target_2014, target_2015
有沒有什麼辦法,只要我們進入2016年添加動態列target_2016
表的基礎上,當年?
我曾與列的SQL Server表:無論如何根據當前年份動態添加SQL Server表中的列?
target_2011, target_2012, target_2013, target_2014, target_2015
有沒有什麼辦法,只要我們進入2016年添加動態列target_2016
表的基礎上,當年?
與
DECLARE @column varchar(20), @SQL varchar(1000)
SET @column = 'target_'+CAST(year(getdate()) AS varchar(4))
SET @SQL =
'ALTER TABLE <yourtable>
ADD '[email protected]+' varchar(50)'
EXECUTE (@SQL)
創建一個SQL代理作業現在安排這項工作在00:01每年1月1日運行。
雖然這將做你正在尋找,我同意評論部分的意見。這本身就是一個糟糕的設計,根本不是一個好主意。
它工作!請Upvote !!! –
這是一個糟糕的設計。您不應將值創建爲動態列,您應該創建列來保存動態值。 – Harsh
你可以嗎?我想,您可以創建一年一次的代理作業併發布適當的DDL。我討厭每年有一次工作,因爲這是非常容易被無意中破壞的事情。底層數據模型顯示不正確。使用具有像2014,2015,2016等值的'year_num'列的多行會更有意義。然後,在新的一年到來時,您的數據模型不必更改。 –
不幸的是,它是這樣設計的,當前表中存在大量數據。所以,我沒有打擾它,而是想到了這個想法。 –