2012-09-24 2 views
-1

tb1 (계정, 상태) 및 tbl2 (계정 status_ex)의 두 테이블이 있습니다. 내가 쿼리두 열을 하나로 결합하는 방법

select tb1.account, 
    stuff(tbl1.status, len(tbl.status)+1, len(tbl.status), tb2.status_ex) as status 
from tb1 left join tb2 
on tbl.account=tb2.accont 

다음 시도하지만 결과는

account status 
0001  A78 
0002  CD 
0003  AB9 
같은 예를

account status 
0001  A 
0002  CD 
0003  AB 

account status_ex 
0001  78 
0002  NULL 
0003  9 

을 위해 나는 두 상태 열을 결합하는 쿼리를 작성하려면, 결과 테이블이 있어야한다 옳지 않아, 내가 뭘 잘못 했니?

답변

5
SELECT 
    tb1.account, 
    status = COALESCE(tb1.status, '') + COALESCE(tb2.status, '') 
FROM tb1 INNER JOIN tb2 -- is LEFT JOIN right? Not sure. 
ON tb1.account = tb2.account; 
+1

+1 COALESCE – JNK

+0

를 잡기 위해이 감사를 작동합니다. 내 경우에는 왼쪽 조인을 사용합니다. – GLP

3

당신은 (SQL Fiddle with Demo 참조) IsNull()를 사용하고 단지 값을 연결할 수 있습니다 :

select t1.account, 
    isnull(t1.status, '') + isnull(t2.status_ex, '') status 
from tb1 t1 
inner join tb2 t2 
    on t1.account = t2.account 

당신은 데이터 형식 status_ex의 무엇 게시되지 않은 그래서 status_ex 필드가 다음, 다른 데이터 형이며, 경우 그것을 cast()해야합니다

select t1.account, 
    isnull(t1.status, '') 
    + isnull(cast(t2.status_ex as varchar(10)), '') status 
from tb1 t1 
inner join tb2 t2 
    on t1.account = t2.account 
관련 문제