2013-07-23 149 views
2

我有一個問題,我無法解決。我的Microsoft SQL Server 2008上工作,我有四列SQL Server 2008:創建動態列名稱

Id 
Date (2013-07, 2013-08, 2011-03, etc) 
Amount 1 (100, 150, etc.) 
Amount 2 (100, 80, etc.) 

如果Amount 1 > 150然後我需要在Date列名來創建具有價值的新列並分發Amount 2到6(日)期間開始一個一個表一個月後Date值。

它應該是這樣的:

 Id Date  Amount 1 Amount 2 
     ---------------------------------- 
     1 2013-07 160   60 
     2 2013-10 180   80        

     Id Date  Amount 1 2013-08 2013-09 2013-10 2013-11 2013-12 2014-01 ... 
     -------------------------------------------------------------------------------- 
     1 2013-07 160   10  10  10   10  10  10 
     2 2013-10 180          20  20  20... 

我不知道如何做到這一點,任何幫助,高度讚賞!謝謝!

回答

1

表本身不應該有這些額外的列,因爲這將是一個非規範化的表結構。在許多情況下,這是存儲數據的一種不好的方式。但是您可以輕鬆地對您現有的表進行查詢,該查詢將以您想要的形式返回其他列,以便您可以以這種方式顯示它。檢出PIVOT and UNPIVOT

+0

我實際上試圖做一個查詢,但我不知道如何動態地返回列名。我已經嘗試了pivot和unpivot,但我無法讓它工作。你能給我舉個例子嗎?謝謝! – user2561907