2014-04-12 4 views
0

나는 나에게이 문제다른 SQL Server 데이터베이스에 두 개의 별도의 열에서 2 날짜의 기반으로 선택

메시지 4104, 수준 16, 상태 1, 줄 3
을주는 하위 쿼리에 문제가있어 다중 부품 식별자 "reference..shift_begin_datetime"을 바인딩 할 수 없습니다.

메시지 레벨 4104, 상태 1, 줄 3
"reference..shift_end_datetime"부분을 바인딩 할 수 없습니다.

메시지 레벨 4104, 상태 1, 줄 3
다중 부분 식별자 "reference..mfg_ww_no"는 바인딩 될 수 없습니다.

mfg_ww_no 테이블은 다른 데이터베이스의 테이블에 있습니다. 내가 풀어야 할 유일한 방법은 shift_begin_datetimeshift_end_datetime 사이에 속하는 tracked_out_datetime을 일치시키는 것입니다.

내가 뭘 잘못하고 있는지에 대한 아이디어.

이 부분은 나에게 문제가되는 하위 쿼리입니다.

(Select 
[reference]..[mfg_ww_no] 
From reference.dbo.ww_shift 
where 
    [tracked_out_datetime] between [reference]..[shift_begin_datetime] and   [reference]..[shift_end_datetime]) as ww 

다음은 참조 용 전체 쿼리입니다.

SELECT distinct TOP 1000 --* 
    [lot_id] 
    ,[tracked_out_datetime] 
    ,convert (varchar(20), S.facility_step_seq_no) + ' ' + convert(varchar(50), 
    STEP.step_name) as step_name 
    ,datediff(mi, FLH.staged_datetime, FLH.tracked_out_datetime) - FLH.time_at_hold_seconds_value /60 as TrueCycleTime 
    ,(Select 
     [reference]..[mfg_ww_no] 
     From reference.dbo.ww_shift 
     where [tracked_out_datetime] between [reference]..[shift_begin_datetime] and [reference]..[shift_end_datetime]) as ww 
from 
fab_lot_extraction..fab_lot_hist FLH 
INNER JOIN 
    traveler..trav_step TS ON FLH.trav_step_OID = TS.trav_step_OID 
INNER JOIN 
    traveler..traveler TRAV ON TS.trav_OID = TRAV.trav_OID 
INNER JOIN 
    traveler..step STEP ON TS.step_OID = STEP.step_OID 
INNER JOIN 
    traveler..step_data_for_fab SDFAB ON TS.step_OID = SDFAB.step_OID 
INNER JOIN 
    reference..mfg_area AREA ON SDFAB.mfg_area_OID = AREA.mfg_area_OID 
INNER JOIN 
    reference..FP_step S ON STEP.step_OID = S.step_OID 
LEFT OUTER JOIN 
    reference..FP_part_in_part_group PART ON FLH.part_type_code = PART.part_code 
LEFT OUTER JOIN 
    reference..FP_part_group PG ON PART.part_group_OID = PG.part_group_OID and 
PG.mfg_facility_OID = 0x990FEE36400A9854 
WHERE 
    FLH.[tracked_out_datetime] >= '20140405 19:000:0' and FLH.[tracked_out_datetime] < '20140406 19:000:0' 
    AND FLH.target_lot_sw = 'Y' 
    and FLH.step_deleted_sw <> 'Y' 
    and step_name like '%PHOTO ENG DISPO%' 
ORDER BY 
    3 
+0

여기에 어떤 종류의 데이터베이스가 있는지 알려주세요. – RobP

+0

누군가가 이것을 게시 한 다음 삭제했습니다. 문제를 해결 했으니 까 누구든지 고맙다. , (A reference.dbo.ww_shift 가입일 \t \t A. [mfg_ww_no] 선택 여기서 [tracked_out_datetime] A. [shift_begin_datetime] 및 A. [shift_end_datetime] 사이) WW – Jazzeroki

+0

의 MySQL 등? SQL 서버? 신탁? 우리는 태그 또는 힌트를 얻을 수 있습니까? – RobP

답변

0

는 의견에 따르면, 누군가가 이미 질문에 대답,하지만 당신은 당신의 절 사이에 나쁜 참조 있었다 것 같습니다 : 특히

where [tracked_out_datetime] between [reference]..[shift_begin_datetime] and [reference]..[shift_end_datetime] 

이 :

[reference]..[shift_begin_datetime] 

을 열을 참조하는 규칙은 다음과 같습니다.

[database].[schema].[table].[column] 

그리고 기본 스키마 단축 할 수 있습니다

[database]..[table].[column] 

그래서, 나는 쿼리는 테이블이 아니라 실제 열을 참조하는 줄 알았는데 생각합니다. 주석에서 언급 한 대답이 표의 별칭이되며 올바른 열 참조가 있습니다.

,(Select A.[mfg_ww_no] From reference.dbo.ww_shift A where [tracked_out_datetime] between A.[shift_begin_datetime] and A.[shift_end_datetime]) as ww