DECLARE @p_frdt varchar(08) /* 작업일자(from) */
DECLARE @p_todt varchar(08) /* 작업일자(to) */
DECLARE @p_itemcode varchar(20) /* 품목코드 */
DECLARE @p_workcode varchar(10) /* 일련번호 */
set @p_frdt ='20130102' /* 작업일자(from) */
set @p_todt ='20130102' /* 작업일자(to) */
select b.f_workdate 검사일자 ,
--b.f_worktime 검사시간 ,
b.f_workcode ,
b.f_tserialno ,
CONVERT(CHAR(8), b.f_worktime , 8) 검사시간 ,
a.f_itemcode 품목코드 ,
e.f_modelname 모델명 ,
a.f_inspdetail 검사항목 ,
a.f_standard 규격,
case when a.f_singlechk = '2' then '' else convert(numeric(20,6),a.f_max) end 상한,
case when a.f_singlechk = '1' then '' else convert(numeric(20,6),a.f_min) end 하한,
c.f_measure 측정값 ,
b.f_workman 작업자 ,
case when b.f_wrongreport='0' then '합격' else '규격이탈' end 판정 ,
IsNULL(d.f_contents, '' ) 원인 ,
IsNULL(d.f_returnco, '' ) 조치 ,
--case when d.f_remark=NULL then IsNULL(d.f_remark,'') else replace(replace(d.f_remark, char(13), ''), char(10), '') end 비고
replace(replace(IsNULL(d.f_remark,''), char(13), ''), char(10), '') 비고
from
qcd34_tbl a ,
qwk03a_tbl b ,
qwk04a_tbl c
LEFT OUTER JOIN qwkwrongreportgun d
ON c.f_measno = d.f_measno
LEFT OUTER JOIN qcd17_tbl e
ON e.f_modelcode = b.f_itemcode
where a.f_itemcode = b.f_itemcode
--and b.f_workdate between '20130103' and '20130103'
and b.f_workdate between @p_frdt and @p_todt
and a.f_serialno = b.f_serialno
and c.f_measno = b.f_measno
and b.f_inspitem = '01'
--and b.f_worktime ='113853'
--and a.f_itemcode like 'DA97-02198B'
order by b.f_workdate, b.f_worktime
----------
메시지 4104, 수준 16, 상태 1, 줄 34
여러 부분으로 구성된 식별자 "b.f_itemcode"은(는) 바인딩할 수 없습니다.
라고 뜨는데 왜그런거죠?
조인을 두개나 더써야하는데 이것부터 막히네요 ㅜㅜ
Comment 3
-
이리
2015.02.26 09:25
-
park87
2015.02.26 11:29
그문제가 아니라 기준 테이블 문제였나봐요
기준테이블을 하나만 잡고 조인시킬수만 있고
조인된 테이블에다가 추가 조인이 안되는 거였네요;;
-
park87
2015.02.26 11:30
이하 완성 쿼리DECLARE @p_frdt varchar(08) /* 작업일자(from) */DECLARE @p_todt varchar(08) /* 작업일자(to) */DECLARE @p_frtm varchar(08) /* 작업일자(from) */DECLARE @p_totm varchar(08) /* 작업일자(to) */DECLARE @p_itemcode varchar(20) /* 품목코드 */DECLARE @p_workcode varchar(10) /* 일련번호 */set @p_frdt ='20130102' /* 작업일자(from) */set @p_todt ='20130102' /* 작업일자(to) */set @p_frtm ='104039' /* 작업일자(from) */set @p_totm ='211722' /* 작업일자(to) */select b.f_workdate 검사일자 ,--b.f_worktime 검사시간 ,CONVERT(CHAR(8), b.f_worktime , 8) 검사시간 ,--b.f_workcode ,f.f_workname 설비명 ,--b.f_tserialno ,g.f_itemname 품명 ,a.f_itemcode 품목코드 ,e.f_modelname 모델명 ,a.f_inspdetail 검사항목 ,a.f_standard 규격,case when a.f_singlechk = '2' then '' else convert(numeric(20,6),a.f_max) end 상한,case when a.f_singlechk = '1' then '' else convert(numeric(20,6),a.f_min) end 하한,c.f_measure 측정값 ,b.f_workman 작업자 ,case when b.f_wrongreport='0' then '합격' else '규격이탈' end 판정 ,IsNULL(d.f_contents, '' ) 원인 ,IsNULL(d.f_returnco, '' ) 조치 ,case when d.f_remark is NULLthen IsNULL(d.f_remark,'')else replace(replace(d.f_remark, char(13), ''), char(10), '')end 비고--replace(replace(IsNULL(d.f_remark,''), char(13), ''), char(10), '') 비고fromqwk04a_tbl c ,qcd34_tbl a ,qwk03a_tbl bLEFT OUTER JOIN qwkwrongreportgun dON b.f_measno = d.f_measnoLEFT OUTER JOIN qcd17_tbl eON b.f_itemcode = e.f_modelcodeLEFT OUTER JOIN qcd74_tbl fON b.f_workcode = f.f_workcodeLEFT OUTER JOIN qcd01_tbl gON b.f_itemcode = g.f_itemcodewhere a.f_itemcode = b.f_itemcode--and b.f_workdate between '20130103' and '20130103'and b.f_workdate between @p_frdt and @p_todtand a.f_serialno = b.f_serialnoand c.f_measno = b.f_measnoand b.f_inspitem = '01'and CONVERT(CHAR(8), b.f_worktime , 8) between @p_frtm and @p_totm--and b.f_worktime ='104039'--and a.f_itemcode like 'DA97-02198B'order by b.f_workdate, b.f_worktime
a,b,c도 ANSI형식으로 조인해보세요