2013-07-29 1 views
3

나는 어디에서나 검색했으며 해결 방법을 찾지 못하는 것 같습니다.여러 개의 SELECT 문이 하나로 통합되어 새로운 열을 만듭니다.

지금은 UNION의 기능을 알고 있지만 제대로 사용되는지 확실하지 않습니다. 나는 그것이, 지역 1 번호 2의 데이터가 포함 된 숫자 1의 데이터와 지역이 포함 된 새 열을 생성하는가 원하는 것은

SELECT pos.pdPosition AS [Region 1] 
    FROM PositionData pos 
    WHERE pos.PositionId = 1765 
    UNION ALL 
    SELECT pos.pdPosition AS [Region 2] 
    FROM PositionData pos 
    WHERE pos.PositionId = 1767 

: 여기 내 쿼리입니다.

내가납니다하면이입니다

enter image description here

어떻게 내가/어떤 문을 사용할 수 있습니다를 분할 할 수 있습니까?

참고 : 이것은 선택 진술이어야합니다.

답변

7
Select 
    (SELECT pos.pdPosition 
    FROM PositionData pos 
    WHERE pos.PositionId = 1765) AS [Region 1] 
    ,(SELECT pos.pdPosition 
    FROM PositionData pos 
    WHERE pos.PositionId = 1767) AS [Region 2] 
6

이 하나의 시도 -

DDL을 :

DECLARE @PositionData TABLE (PositionId INT, pdPosition INT) 
INSERT INTO @PositionData (PositionId, pdPosition) 
VALUES (1765, 1765),(1767, 1767), (1768, 1768) 

내 쿼리 :

SELECT 
     [Region 1] = MIN(CASE WHEN PositionId = 1765 THEN pdPosition END) 
    , [Region 2] = MIN(CASE WHEN PositionId = 1767 THEN pdPosition END) 
FROM @PositionData 
WHERE PositionId IN (1767, 1765) 

bummi의 네가 윌리엄 이니 Y :

SELECT 
    (SELECT pdPosition 
    FROM @PositionData 
    WHERE PositionId = 1765) AS [Region 1] 
    ,(SELECT pdPosition 
    FROM @PositionData 
    WHERE PositionId = 1767) AS [Region 2] 

출력 :

Region 1 Region 2 
----------- ----------- 
1765  1767 

(1 row(s) affected) 

Region 1 Region 2 
----------- ----------- 
1765  1767 

(1 row(s) affected) 

쿼리 비용 :

cost

+0

다시 말하지만,'(PositionId = 1765, pdPosition End의 경우)'와 같은 것이 아니겠습니까? –

+0

'CASE WHEN positionId'와'WHERE positionId IN'으로 'WHERE pdPosition IN'을 변환하십시오. –

+0

왜 이것을해야합니까? :) – Devart

관련 문제