2017-12-07 23 views
0

조인에서 사건 함수를 사용하려고하고있어 쿼리를 실행하지 못했습니다. 내가 뭘 잘못하고있어? 내가 얻을하고자하는 어떤사례에서 참여를 사용하여

left join vortex_dbo.vw_public_material_history on 
CASE 
WHEN vw_public_request_material_location_mir.material_request_id = (substring(vw_public_material_history.comments,12,6)) 

then vw_public_request_material_location_mir.material_request_id 
else null 
end 

내가에서 "사실"이있는 경우에만 행을 결합 인 내가 여기서 뭔가를 그리워 느낌 "때"

.

+0

'case' 표현을 건너 뛰고 대신'AND' /'OR'를 사용하십시오! – jarlh

답변

0

CASE 표현이 의미가 없습니다. CASE 표현식의 결과 값은 예를 들어 material_request_id입니다. 따라서 문자열이 일치하는 경우

left join vortex_dbo.vw_public_material_history on material_request_id 

을 얻을 수 있습니다. 이 ON 절이 불완전하다는 것을 알 수 있습니까? 데이터 모델에 관해서는

from vw_public_request_material_location_mir mir 
left join vortex_dbo.vw_public_material_history hist on 
    mir.material_request_id = (substring(hist.comments,12,6)) 

:

당신은 아마 테이블 별칭으로 더 잘 읽을 것

left join vortex_dbo.vw_public_material_history on 
    vw_public_request_material_location_mir.material_request_id = 
    (substring(vw_public_material_history.comments,12,6)) 

를 찾고 있습니다 당신이 문자열에 숨겨진 ID를 가지고 이상한 것 같다. 테이블 디자인을 다시 고려할 수도 있습니다.

+0

당신의 도움에 감사드립니다. 당신이 제안한대로 왼쪽의 조인을 시도했지만 다음 오류가 나타납니다. "varchar 값 'tem'을 데이터 유형 int로 변환 할 때 변환이 실패했습니다." "comments"의 데이터에는 문자와 숫자가 포함되어 있으며 숫자 만 추출합니다. – Avi22

+0

분명히 아닙니다. 그것은 숫자가 아닌 문자열 '용어'를 추출하는 것 같습니다. –

+0

나는 여기에 또 다른 문제가 있다고 생각하는데, 나는이 코멘트와 같은 대부분의 데이터를 "MIR # 332166 | Yaniv 당 yg"처럼 보이지만 문자 만 들어있는 행도 가지고 있습니다. 이 아이디어를 어떻게 생각하니? – Avi22