【问题标题】:Selecting based off of 2 dates in two separate column on another SQL Server database根据另一个 SQL Server 数据库上两个单独列中的 2 个日期进行选择
【发布时间】:2014-05-26 09:50:29
【问题描述】:

我遇到了一个子查询问题

消息 4104,第 16 级,状态 1,第 3 行
无法绑定多部分标识符“reference..shift_begin_datetime”。

消息 4104,第 16 级,状态 1,第 3 行
无法绑定多部分标识符“reference..shift_end_datetime”。

消息 4104,第 16 级,状态 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 

【问题讨论】:

  • 我们在这里谈论什么样的数据库?!
  • 有人发了这个然后又删了。它确实解决了这个问题,所以谁发布了谢谢。 ,(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
  • mysql? sql服务器?甲骨文?我们可以得到一个标签或提示吗...?
  • 我发帖的时候在标题里加了tsql。这是 Microsoft SQL Server。

标签: sql-server date select between


【解决方案1】:

根据 cmets 的说法,有人已经回答了这个问题,但看起来你在 between 子句中有一个错误的引用:

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]

所以,我相信查询认为您引用的是表而不是实际列。您在 cmets 中提到的答案为表加上别名,然后您就有了正确的列引用。

,(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

【讨论】:

    猜你喜欢
    • 2018-03-30
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    相关资源
    最近更新 更多