2012-10-19 24 views
0

我有根據的年數與薪水的員工錶行數據如下:如何獲得柱側

Employee_table 
----------------------------------------------------------------------------- 
emp_ID - FirstName- LstName salary ... year - 
001 - xx  -  yy - 03212   2000  
001 - xx  -  yy - 04212   2001   
002 - xxx  - yyy - 03425   2000   
002 - xxx  - yyy - 04425   2001   
003 - xxxx - yyyy - 03429   2000   
003 - xxxx -  yyyy - 04429   2001   
------------------------------------------------------------------------------ 

而且我想編寫一個查詢,這將給我一年的員工數據柱側爲:

tblResults 
--------------------------------------------------------------------- 
emp_ID 2000  2001   ....  ....    
--------------------------------------------------------------------- 
01  03212  04212 
02  03425 - 04425  
03  03429  04429 
+5

我覺得你未來的一個關鍵。 – UnhandledExcepSean

回答

5

好吧,作爲@SpectralGhost說,你可以使用一個PIVOT。如果你知道你事前多少年的需要,那麼你可以這樣做:

SELECT * 
FROM ( SELECT emp_ID, salary, [year] 
     FROM Employee_Table) AS ET 
PIVOT(MIN(salary) FOR [year] IN ([2000],[2001],[2002])) AS PT 

如果你不知道多少年了也有,那麼你會需要動態SQL(所以首先,去this link) 。然後試試這個:

DECLARE @Years NVARCHAR(MAX), @Query NVARCHAR(MAX) 

SELECT @Years = STUFF((SELECT DISTINCT ',' + QUOTENAME([year]) 
         FROM Employee_Table 
         FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'') 

SET @Query = ' 
SELECT * 
FROM ( SELECT emp_ID, salary, [year] 
     FROM Employee_Table) AS ET 
PIVOT(MIN(salary) FOR [year] IN ('[email protected]+')) AS PT' 

EXEC(@Query) 
+0

感謝Lamak的幫助... –