2015-02-06 55 views
2

我對SQL很滿意,但有一件我不確定的事情是可能的,所以我想我會在這裏再次問一個問題。SQL - 嵌套列可能嗎?

我需要將「國家」作爲每行返回,然後每個國家有3列記錄來自另一個表的平均百分比。這很好,我可以做到這一點沒有問題。

我被卡住的地方是,我想要重複每行3列,比方說,每個月。所以,實際上,我希望3列嵌套在包含月份名稱的更高級別列中。我需要的佈局如下(列「索引」是公司1/2列的百分比計算)

 |   January   | 

國家|公司1 |連隊2 |首頁|

這甚至可能嗎?

+1

SQL Server與行和列一起工作,您似乎在討論的是演示文稿,這可以通過Excel或Reporting Services來完成。 – 2015-02-06 12:09:49

+1

只有當你想自己管理它時,它是非常不推薦的,因爲它與數據標準化和數據建模應該如何運作相沖突。你要做得更好,只需要更改演示文稿 – 2015-02-06 12:09:52

+0

感謝您的反饋,我們希望能夠完成此任務,而無需在Excel中進行任何操作,但看起來好像這是唯一的方法! – Donald 2015-02-06 12:28:29

回答

2

可以實現這種動態SQL的事情,只是舉例:

CREATE TABLE #Example (Country varchar(20)) 

DECLARE @sql nvarchar(max) 
DECLARE @prefix nvarchar(100) 
DECLARE @startMonth int=3 
DECLARE @endMonth int=6 

DECLARE @currentMonth [email protected] 

WHILE @currentMonth<@endMonth 
BEGIN 
    SET @prefix='Month'+CAST(@currentMonth AS varchar(10)) 
    SET @sql='ALTER TABLE #Example ADD' 
    +'['[email protected]+'_Company1] varchar(20)' 
    +',['[email protected]+'_Company2] varchar(20)' 
    +',['[email protected]+'_Index] int' 
    EXEC (@sql) 

    SET @sql='...' -- ... SQL to set values into the prefixed columns based upon your criteria 
    EXEC (@sql) 

    SET @[email protected]+1 
END 

select * from #Example -- The result with 3 columns per month 

這將從@currentMonth值

可能增加3列每月,每一個獨特的前綴這種技術爲您提供瞭解決方案的基礎?