표,

2014-06-23 7 views
0

나는이 두 테이블 테이블 A와 테이블 B를표,

표 A는 비 포함 아이디, 숫자, 시간, 값 1

표 B 이드, 데이터를 포함, 값 2

데이터 선택 조건의 일부에 참여 SQL
Example of the Record on Table A: 

Id  Number  Tried  Value1 
------- ---------- --------- --------- 
1  123  23   5 
2  124  23   6 
3  1254  23   7 

Example of the Record on Table B: 

Id  Data  Value2 
------ --------- ------- 
1  123,23  6 
2  122,21  5 
3  1254,23 7 

표 1의 조인 조건에 따라 값 1과 값 2를 함께 추가하는 목적 테이블 A 번호가있는 데이터와 레코드를 일치 시키려고 시도합니다.

Example : 
Id  (Value1 + Value2) 
------- ----------------- 
1  11 
3  14 

내 쿼리 :

select a.Id , a.Value1+ b.Value2 
from a 
join b on substring(b.Data,1,3) = a.Number and substring(b.Data,5,2) = a.Tried 

내가 하위 문자열 시도했지만 데이터 레코드 길이의 값은 아이디 1을 보여 ID 1, 3 및 쿼리 결과의 전류에 비교 다른 다른 방법이 ','을 꺼내는 2 종류의 값으로 나누는 1 개의 열 필드와 결합하여 테이블 a에 2 개의 필드를 결합 하시겠습니까? 이 쿼리는 도움이 될

+1

외부 키와 같은 연결 문자열을 사용하는 것은 끔찍한 생각입니다. 당신은 절대적으로 그것에 가입해야합니까? – mareckmareck

답변

0

선택하면, 오라클

에서
select a.Id , (a.Value1+ b.Value2) 
from a, b 
where a.id = b.id and b.Data = (a.Number || ',' || a.Tried); 

편집 :

select a.Id ,b.Id (a.Value1+ b.Value2) 
from a, b 
where b.Data = (a.Number || ',' || a.Tried); 
+0

a.id = b.id가 기준이어야하는지 잘 모르겠습니다. –

+0

@JoachimIsaksson : 귀하의 의견을 바탕으로 수정 된 답변. 감사! –

0

당신은 다음 쿼리를 사용할 수 있습니다 @Joachim 이삭손 제안을 바탕으로.

select A.Id, (A.Value1 + B.Value2) [Value1 + Value2] from tblA A 
    inner join tblB B on A.Number = SUBSTRING(B.Data, 1, charindex(',', B.Data, 1) - 1) 
     And A.Tried = SUBSTRING(B.Data, charindex(',', B.Data, 1) + 1, Len(A.Tried)) 

이 항목은 SQL Server에서 시도한 것입니다.

Nishanthi Grashia의 쿼리는 SQL Server에서도 변환 될 수 있습니다. ||을 (를) 교체해야합니다.+