2013-09-30 73 views
0

我有一樣的數據表:創建的列從其他表中記錄一個SQL視圖

 
A1 FID A2 
0 0 39 
1 0 23 
0 1 16 
1 1 64 
2 1 12 
0 2 76 
0 3 11 
0 4 87 

我想創建一個視圖,將列出此:

 
FID Col0 Col1 Col2 
0 39 23 null 
1 16 64 12 
2 76 null null 
3 11 null null 
4 87 null null 

豈今在T-SQL中可能嗎?

+1

其他數據(其他列)來自哪裏? – JoeFryer

回答

1

你可以使用這樣的事情:

SELECT FID, 
     Col0 = MAX(CASE WHEN A1 = 0 THEN A2 END), 
     Col1 = MAX(CASE WHEN A1 = 1 THEN A2 END), 
     Col2 = MAX(CASE WHEN A1 = 2 THEN A2 END) 
FROM T 
GROUP BY FID; 

或者你可以使用PIVOT

SELECT pvt.FID, 
     [Col0] = pvt.[0], 
     [Col1] = pvt.[1], 
     [Col2] = pvt.[2] 
FROM T 
     PIVOT 
     ( MAX(A2) 
      FOR A1 IN ([0], [1], [2]) 
     ) pvt 

Examples of Both on SQL Fiddle

如果你有一個未知的數值爲A1,因此,未知數量的列無法在視圖中執行此操作。您需要使用動態SQL,但通常在應用程序層更好處理,而不是SQL-Server本身。

+0

謝謝,這項工作,但現在我有使用GroupBy的問題。 你能檢查我的最新問題嗎?謝謝。 –

相關問題