2013-11-03 2 views
0

두 테이블을 조인해야합니다. 나는 다른 테이블 (B)에 나열된 숫자의 범위와 테이블 (A)에있는 숫자의 처음 두 자리를 일치 시키려고 시도하고 있습니다.범위 하위 문자열을 사용하여 두 테이블 조인

표 A :

CREATE TABLE [db].[Annual_Capture](
[id] [int] IDENTITY(1,1) NOT NULL, 
[Main_TIN] [char](9), 
[MainTaxpayerName] [varchar](20), 
[Main_AbstractNumber] [char](3), 
[Year] [int] NULL 

표 B :

CREATE TABLE [db].[CAREHOLDERS_TIN](
[Care_ID] [int] IDENTITY(1,1) NOT NULL, 
[Care_EINStart] [char](2), 
[Care_EINEnd] [char](2), 
[Care_Owner] [varchar](20) 

결과는 이러한 표를 표 B.

의 Careholders 테이블 (A)의 전체를 기록 할 것이다 나는 SQL 전문가가 아니므로 끝없이 검색하면서도 적절한 구문을 알지 못합니다. 가 나는 행운과 함께 다음과 같은 사용하려고 시도하고있다 :

Select A.*, B.Care_Owner 

FROM db.Annual_Capture as A, 
inner join db.CAREHOLDERS_TIN as B 
On A.Main_TIN = 
SUBSTRING(A.Main_TIN, 1, 2)>= B.Care_EINStart 
AND SUBSTRING(A.Main_TIN, 1, 2) <= B.Care_EINEnd 

참고 : Main_TIN는 문자입니다 (9)와 Care_EINStart/Care_EINEnd는 문자입니다 (2). 그래서 Main_TIN이 867530900이라면, 80/90과 같은 EINStart/Care_EINEnd가 지정된 CareOwner를 찾고 있습니다. 모든 A.Main_TIN에 대해이 작업을 수행해야하며 거기에 B.Care_Owners가 할당되어 있어야합니다. 이것은 아마도 스토어드 프로 시저 또는보다 가능성있는 뷰로 끝날 것입니다.

누구나 도움을 줄 수 있다면 정말 고맙습니다.

답변

0

다음을 시도하십시오. 방금 제공 한 구문은 다음과 같습니다.

SELECT A.*, B.Care_Owner 
FROM db.Annual_Capture AS A 
    INNER JOIN db.CAREHOLDERS_TIN AS B 
     ON SUBSTRING(A.Main_TIN, 1, 2) >= B.Care_EINStart 
      AND SUBSTRING(A.Main_TIN, 1, 2) <= B.Care_EINEnd