2011-09-23 3 views
0

.NET 응용 프로그램에서 사용할 쿼리를 작성하고 있으므로 SQL Server 2008에서 응용 프로그램이 실행될 클라이언트 PC 대신 많은 처리를 수행하고 싶습니다. 에.행 열 SQL Server 쿼리

색인 값을 가진 단일 테이블에서 데이터를 가져 오려고하는데, 해당 색인 값을 기반으로 해당 항목을 특정 열에 배치하려고합니다. 여기

MA  SN  Mindex 
B275 7A1515 1 
B276 7A1515 2 
E530 7A1515 3 
B291 7A1519 1 
B292 7A1519 2 
E535 7A1519 3 
B301 7A2515 1 
B302 7A2515 2 
B331 7A2519 1 
B332 7A2519 2 

는 출력 내가 좋아하는 것 :

테이블 MAS : 여기

은 예입니다

SN  mi1  mi2  mi3 
7A1515 B275 B276 E530 
7A1519 B291 B292 E535 
7A2515 B301 B302 null 
7A2519 B331 B332 null 
나는 다음과 같은 쿼리를 수행하려고

를, 그것은있는 항목 작동 3 인덱스가 있지만 두 개만 있으면 임의의 데이터로 채 웁니다. 사람이 아직도 이러한 고급 쿼리를 작성에서 매우 새로운 오전으로 올바른 방향으로 날 지점 수있을 것입니다 경우

select mas1.SN, mas1.MA as mi1,mas2.MA as mi2, mas3.MA as mi3 
from MAS ma1, MAS ma2, MAS ma3 
where mas1.SN = '7A1515' and mas1.Mindex = '1' and mas2.Mindex = '2' and mas3.Mindex = '3' 

궁금 해서요.

답변

5

SQL Server 2008을 사용하면서도 PIVOT을 사용할 수 있지만 이전 스타일의 방법은 IMO가 더 쉽습니다.

SELECT 
    SN, 
    MAX(CASE WHEN Mindex=1 THEN MA END) AS mi1, 
    MAX(CASE WHEN Mindex=2 THEN MA END) AS mi2, 
    MAX(CASE WHEN Mindex=3 THEN MA END) AS mi3 
FROM MAS 
GROUP BY SN  
+0

그 트릭을 했어! – jinanwow