2016-06-25 2 views
0

2 개의 열 출력을 하나의 열로 결합하고자합니다.UNION을 사용하지 않고 여러 열의 결과를 단일 열로 결합 할 수 있습니까? SQL Server 2012

예 :

select 1 as id, 2 as exid 

현재 출력 : 나는 Concat 기능을 사용하는 경우

id 
1 
2 

다음 출력은 다음과 같습니다 : 나는 다음은 같은 출력을 원하는

id | exid 
1 | 2 

하지만, :

id 
12 

이 유형의 출력을 원하지 않습니다.

참고 : UNION 기능을 사용하고 싶지 않습니다.

답변

0

Unpivot 당신이

select exprid [id] from 
(select 1 [id],2 [expid] 
) s 
unpivot (exprid for col in (id,expid)) as t2 

은 단지 두 번 테이블을 스캔 한 번 대신 때문에이 빨리되어야 사용 노조에 비해 무엇을하려고 달성하는 데 도움이 될 것입니다.

select x.* 
from t outer apply 
    (values (id), (exid)) x(id); 

그러나, union all는 매우 합리적인 접근 방식이다, 그래서 나는 자주를 사용하는 것이 좋습니다 :

+0

고마워요. – Nirali

0

또 다른 방법은 outer apply 사용합니다.

+0

예 "모든 조합"은 좋은 접근 방법입니다 ...하지만 성능이 저하됩니다. – Nirali

+0

@Nirali. . . 테이블을 두 번 스캔합니다. 테이블이 메모리에 들어가면 성능은 좋을 것입니다. 이러한 성능을 최적화하는 것이 중요한 경우도 있지만, 차이를 만들기 위해서는 매우 큰 테이블을 사용해야합니다. –

+0

@Gordon ... 정말 고마워요. 그냥 예제 일뿐입니다. 저는 큰 테이블을 사용했고 쿼리에 저장 프로 시저를 사용했습니다. 나는 초급 SQL입니다. "UNION ALL"은 성능이 떨어졌습니다. ..... 그래서 "UNION ALL"을 사용하면 퍼포먼스가 떨어지 겠지요 ... "UNION ALL"을 사용하면 퍼포먼스가 좋아질 것입니다. "? ...이 질문에 미리 감사드립니다. :) – Nirali

관련 문제