2012-08-08 62 views
1

我需要編寫一個過程,在該過程中必須求和未知的列名稱。TSQL將列名的varchar變量傳遞給SUM函數

我可以訪問的唯一信息是列位置。

我能夠使用以下來獲得列名:

SELECT @colName = (SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='TABLENAME' AND [email protected]) 

然後我有以下幾點:

SELECT @sum = (SELECT SUM(@colName) FROM TABLENAME) 

然後我收到以下錯誤:

Operand data type varchar is invalid for sum operator

我對如何完成這項工作感到困惑。我看過很多關於convert和cast的帖子,但是我不能將它們轉換爲float,numeric等等,因爲這是一個名字。

我將不勝感激任何幫助。

謝謝

回答

5

這是不可能的。你將不得不組裝SQL查詢,然後執行它。像這樣:

SET @sqlquery = 'SELECT SUM(' + @colName + ') FROM TABLENAME' 
EXECUTE (@sqlquery) 

相應地進行調整。

+0

偉大的工作!我很感激幫助。 – Brian 2012-08-08 18:08:01