2017-10-17 89 views
1

我創建了以下過程以最終獲取值(而不是最後的列名稱)。但是,如果僅在最後一個查詢中使用聲明的@ColumnName,則只會看到列名「XXX」,而不是該行的XXX值。使用變量查詢總是返回變量值

我有以下幾點:

DECLARE @ColumnName AS VARCHAR(50) 
SET @ColumnName = (select column_name FROM INFORMATION_SCHEMA.COLUMNS where table_name = 'History' and ORDINAL_POSITION = 2) 

SELECT @ColumnName from kat.[dbo].[History] 

我想獲得的是以下結果:

select XXX from kat.[dbo].[History] 

即使@ColumName有這種不正常的XXX的值。

在左我得到我的結果(列的總名稱,它的右側是所需的值)

1-XXX, The value from XXX 
2-XXX, the next value from XXX 
3-XXX, the next value from XXX 

很多感謝,

+0

我假設歷史有很多行。您感興趣的是XXX的哪個價值? –

+1

因爲@ColumnName是一個varchar,它總是會返回一個字符串。在SQL Server中,沒有列變量類型。相反,您需要使用名爲[動態SQL(源MS文檔)]的技術(https://docs.microsoft.com/en-us/sql/odbc/reference/dynamic-sql)。 –

回答

1

你需要動態查詢

EXEC('SELECT '[email protected]+' from kat.[dbo].[History] ') 
+0

許多感謝JaydipJ – Katherine99

+0

樂意幫忙; p –

+0

我也可以使用動態查詢的結果來插入此查詢中的值嗎?例如,插入表值((EXEC('SELECT'+ @ ColumnName +'from kat。[dbo]。[History]'))。這是可能的嗎? – Katherine99