2017-02-22 1 views
1

10 개의 다른 DB에서 파생 된 40 개의 테이블에서 UNION 25 필드를 사용하려고합니다. 노동 조합을 사용하여 결합유니온 오류를 일으키는 열을 식별하는 방법

모든 쿼리, INTERSECT 또는 EXCEPT 연산자가 가 대상 목록에 표현의 동일한 번호가 있어야합니다 : 내가 함께 노동 조합 모두에 시도 할 때

나는 다음과 같은 오류가 발생했습니다. 같은 형식이 아닌 어떤 필드를 식별하는 가장 빠른 방법을, 또는 거기는 "힘"명령이 테이블 SAS처럼 UNION에 또 다른 방법입니다 것입니다 무엇

. 나는 현재 SQL 서버 2014

+5

열 유형이 테이블간에 다르지 않고 각 UNIONED 쿼리의 SELECT 절에 같은 수의 열을 갖지 않는다는 것을 알려주지 않습니다. 당신의 SQL을 보여주십시오 –

+7

당신이 실제로 얼마나 많은 컬럼을 선택하지 않고 하나 이상의 장소에서'선택 *'을 사용하고있는 것 같습니다. 각'SELECT '를 동일한 수로 만들고,'UNION '의 각 부분에 이상적으로 입력하십시오. –

+1

공용체의 한 부분을 주석 처리하고 조회를 다시 실행하십시오. successfuly를 실행하면 문제는 주석 처리 된 섹션에 있습니다. – PeterRing

답변

1

을 사용하고

아마 가장 빠른 방법은 information_schema.columns을 사용하는 것입니다. 예를 들어, 당신이 각 테이블에 대해 select *를 사용하고, 경우에, 당신은 열이 나타나는 테이블을 계산하여 문제가되는 컬럼 (들)을 얻을 수 있습니다 :

select column_name, count(*) 
from information_schema.columns 
where table_schema = @schema and 
     table_name in (. . .) 
group by column_name 
having count(*) <> 40; 

나는이 목적을 위해 select *를 사용하여 가난한를 나타내는 점에 유의한다 데이터베이스 설계. 동일한 형식의 여러 테이블 대신 모든 데이터가 결합 된 단일 테이블을 가져야합니다.

관련 문제