2012-09-26 45 views
0

我已經在一些站點上走了一輪,並且看到解決Dynamic Pivot的(唯一)方法是將查詢存儲爲字符串,然後執行該字符串查詢。但是,就我而言,我似乎無法應用此解決方案,因爲列數超過了一個字符串的容量。使用Dynamic Pivot時超過字符串的容量

declare @columns nvarchar(max) 

select @columns = COALESCE(@columns + ', ','') + QUOTENAME(name) 
from table1 

雖然我聲明@columns的最大容量,但它仍然沒有足夠的空間並導致錯誤。 有沒有什麼辦法可以解決這個問題,或者我該如何構建一個動態數據透視而不用將查詢存儲爲字符串?

回答

1

如果你的列名只包含英文字母,然後嘗試VARCHAR(MAX),而不是爲nvarchar(最大)

VARCHAR(最大)可容納數據的2B同時爲nvarchar(最大)只能容納4K字符

+0

謝謝。但是,我的專欄是根據我網站上註冊的用戶名稱建立的。當用戶的數量是巨大的,也許我不能存儲在一個字符串:(。 –

+0

最大的列可以創建一個表在sql server 2008是1024.我認爲varchar(max)會很好。你重新設計表結構 –

+0

我創建了大約700個用戶,並且varchar(max)不符合。它不是相對於結構,我使用動態數據透視來創建報告文件。 –