2012-10-19 2 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   
------------------------------------------------------------------------------ 

를 내가 나에게 해와 직원 데이터를 제공하는 쿼리를 작성하려면 같은 열 측 : @SpectralGhost 말했듯이

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

나는 미래에 피벗을 느낍니다. – UnhandledExcepSean

답변

5

좋아, 당신은 PIVOT를 사용할 수 있습니다. 당신이 필요로 사전에 몇 년을 알고 있다면, 당신은이 작업을 수행 할 수 있습니다

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

당신이 얼마나 많은 년을 모른다면, 당신은 할거야 (this link로 이동, 그래서 첫번째) 동적 SQL이 필요 . 그런 다음 시도해보십시오.

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에게 감사드립니다 ... –

관련 문제