2016-06-20 50 views
0

具有如下表:如何將列名添加到列值中?

| Some Table  | 
| Id | Name | Age | 
| 23 | Marc | 41 | 
| 54 | Edu | 34 | 

我想:

|Another Table's Column| Id | Name  | Age  | 
| .....    | [email protected] | [email protected] | [email protected] | 
| .....    | [email protected] | [email protected] | [email protected] | 

這個查詢將動態SQL內使用,表的名稱會作爲一個參數就過去了。

最後的查詢必須證明數據的至少兩個表中,只有其中一人必須證明他列名作爲前綴的數據。

+0

你可以調查'INFORMATION_SCHEMA.COLUMNS'視圖來獲取列名 – Alex

+0

的問題是有點不清楚。 「只有他們中的一個必須以他的列名作爲前綴顯示數據」是什麼意思?如果我們能有兩個表中的數據和一些輸出可以更清楚 – Sam

+0

想必你想要的東西像'DECLARE @ VARCHAR(MAX)=「」; SELECT @ + = ' ''' + COLUMN_NAME + '@' '+ CAST(' + COLUMN_NAME + 'AS VARCHAR(MAX))[' + COLUMN_NAME + ']' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =「myTable''並圍繞該動態查詢? – ZLK

回答

0

不知道我理解你想要什麼,但這裏是腳本結果中顯示的列名於任何通過表:

DECLARE @t NVARCHAR(128) = '[Person].[Person]'; 
DECLARE @l NVARCHAR(2000) = ''; 
DECLARE @s NVARCHAR(4000) = ''; 

SELECT @l = (
SELECT ' ''@' + Name + ''' + CAST([' + Name + '] as VARCHAR(max)) as [' + Name + '],' 
FROM sys.columns 
WHERE object_id = OBJECT_ID(@t) 
ORDER BY column_id 
FOR XML PATH('')); 

SELECT @s = 'SELECT ' + LEFT(@l,LEN(@l)-1) + ' FROM ' + @t + ';' 

PRINT @s 
EXEC (@s) 

您可以調整它鏈接的另一個表或多個表