错误:无法绑定多部分标识符,引用代码的 FROM 部分中的几行



我不断收到这些错误:

Msg 4104,级别 16,状态 1,第 80 行 多部分标识符 无法绑定"t.flngKey"。Msg 4104,级别 16,状态 1,第 81 行 无法绑定多部分标识符"t.flngKey"。消息 4104, 级别 16,状态 1,第 82 行 多部分标识符 无法绑定"t.flngAccountKey"。

SELECT  t.flngKey AS flngTaskKey,
t.fstrAccountType,
t.fstrTaskSource,
CASE    t.fstrCategory 
    WHEN    '' THEN '' 
    ELSE    t.fstrTaskSource + '_CAT_' + t.fstrCategory 
    END AS fstrCategory,
CASE    
    WHEN t.fstrType = '' THEN '' 
    WHEN wd.fstrWorkType    = 'SUSIN1'
    AND wd.fstrOwner        =  ' ' 
    AND wd.flngworkkey      =  wr.flngworkkey 
    AND wr.fstrAccountType  <> '007' 
    AND wr.fblnOpen         =  1 
    AND EXISTS  
        (SELECT 1 
        FROM    tblIndicator id
        WHERE   id.fstrIndicator   = 'EIWTCH' 
        AND id.flngVer         = 0 
        --AND   fdtmCease       > @pdtmRunDate 
        AND id.flngAccountKey  = wd.flngAccountKey)
    THEN 'Suspended for Audit Indicator - EIC Watch For'
    ELSE    t.fstrTaskSource + '_TYP_' + t.fstrType 
    END AS fstrType,
CASE    t.fstrStage 
    WHEN    '' THEN '' 
    ELSE    t.fstrTaskSource + '_STG_' + t.fstrStage 
    END AS fstrStage,
ISNULL(t.fdtmFilingPeriod, '31-Dec-9999') AS fdtmFilingPeriod,
t.flngKey,
t.flngAccountKey,
t.flngCustomerKey,
'' AS fstrReturnStatus,
t.fdtmCreated,
t2.fdtmOldestCreated,
ISNULL(l.fstrCode,
ISNULL(lr.fstrPOCode, '')) AS fstrPOCode,
1 AS flngCount,
CASE    t.fstrAssignedTo 
    WHEN    '' THEN 'Unassigned' 
    ELSE    'Assigned' 
END AS fstrAssigned,
(SELECT t3.fstrOwner 
FROM    t3 
WHERE   t3.fstrUser  = t.fstrAssignedTo) AS fstrOwner,
(SELECT t3.fstrSBU 
FROM    t3 
WHERE   t3.fstrUser  = t.fstrAssignedTo) AS fstrUnit 
FROM    tblTaskOpen t with (nolock) LEFT OUTER JOIN WIS_GTIMG.DBO.TBLImgCaseToImage ci with (NOLOCK) 
ON  t.flngkey         =  ci.flngCaseKey 
AND t.fstrTaskSource  =  'CASE' LEFT OUTER JOIN WIS_GTIMG.DBO.TBLImgIndex i with (NOLOCK) 
ON  ci.flngimagekey   =  i.flngimagekey 
AND i.fstrindextype   =  'DLN' 
AND i.fblnValid       =  1 LEFT OUTER JOIN WIS_GTEXT.DBO.tblWI_LevyResponse l with (NOLOCK) 
ON  i.fstrIndexId     =  l.fstrDLN 
AND i.fstrindextype   =  'DLN' 
AND i.fblnValid       =  1 LEFT OUTER JOIN WIS_GTEXT.DBO.TBLWI_letterResponses lr with (NOLOCK) 
ON  i.fstrindexid     =  lr.fstrDLN 
AND i.fstrindextype   =  'DLN' 
AND i.fblnValid       =  1 ,
    t2
LEFT OUTER JOIN tblWorkToReturn wr
ON t.flngKey=wr.flngWorkKey LEFT OUTER JOIN tblWorkDetail wd **-- THE ERRORS REFER TO THESE LINES**
ON t.flngKey=wd.flngWorkKey LEFT OUTER JOIN tblIndicator id
ON (t.flngAccountKey=id.flngAccountKey AND id.fstrIndicator='EIWTCH')
WHERE   t.fstrCategory    <> 'ABC' 
AND t.fstrCategory    =  t2.fstrCategory 
AND t.fstrType        =  t2.fstrType 
AND NOT EXISTS  (SELECT 'xyz' 
    FROM    tblaudit a 
    WHERE   a.flngAuditkey    = t.flngKey 
    AND a.fblnPosted      = 1 
    AND t.fstrTaskSource  = 'aud') 

谢谢大家的帮助!

-

-编辑:找到解决方案--

我用它来帮助 无法绑定多部分标识符

我编辑了代码,看起来像这样

FROM    tblTaskOpen t with (nolock) LEFT OUTER JOIN WIS_GTIMG.DBO.TBLImgCaseToImage ci with (NOLOCK) 
ON  t.flngkey         =  ci.flngCaseKey 
AND t.fstrTaskSource  =  'CASE' LEFT OUTER JOIN WIS_GTIMG.DBO.TBLImgIndex i with (NOLOCK) 
ON  ci.flngimagekey   =  i.flngimagekey 
AND i.fstrindextype   =  'DLN' 
AND i.fblnValid       =  1 LEFT OUTER JOIN WIS_GTEXT.DBO.tblWI_LevyResponse l with (NOLOCK) 
ON  i.fstrIndexId     =  l.fstrDLN 
AND i.fstrindextype   =  'DLN' 
AND i.fblnValid       =  1 LEFT OUTER JOIN WIS_GTEXT.DBO.TBLWI_letterResponses lr with (NOLOCK) 
ON  i.fstrindexid     =  lr.fstrDLN 
AND i.fstrindextype   =  'DLN' 
AND i.fblnValid       =  1 LEFT OUTER JOIN tblWorkToReturn wr
ON t.flngKey=wr.flngWorkKey LEFT OUTER JOIN tblWorkDetail wd
ON t.flngKey=wd.flngWorkKey LEFT OUTER JOIN tblIndicator id
ON (t.flngAccountKey=id.flngAccountKey AND id.fstrIndicator='EIWTCH'),
    t2

这让它工作了,因为它在 T 表上留下了连接,而不是后面列出的 T2 表。 即使您可以指定要联接的内容,这些也不一定能确定它联接在哪个表上。 在这种情况下,由于在 FROM 中声明 t 之后的所有后续代码行都是连接, 它们都引用同一个表,T.我发现逗号有助于确定它正在连接哪个表。请注意,在声明 T2 之前没有逗号。

你应该检查 tblTaskOpen table。字段 flngKey 和 flngAccountKey 在那里不存在。

我用它来帮助 无法绑定多部分标识符

我编辑了代码,看起来像这样

FROM    tblTaskOpen t with (nolock) LEFT OUTER JOIN WIS_GTIMG.DBO.TBLImgCaseToImage ci with (NOLOCK) 
ON  t.flngkey         =  ci.flngCaseKey 
AND t.fstrTaskSource  =  'CASE' LEFT OUTER JOIN WIS_GTIMG.DBO.TBLImgIndex i with (NOLOCK) 
ON  ci.flngimagekey   =  i.flngimagekey 
AND i.fstrindextype   =  'DLN' 
AND i.fblnValid       =  1 LEFT OUTER JOIN WIS_GTEXT.DBO.tblWI_LevyResponse l with (NOLOCK) 
ON  i.fstrIndexId     =  l.fstrDLN 
AND i.fstrindextype   =  'DLN' 
AND i.fblnValid       =  1 LEFT OUTER JOIN WIS_GTEXT.DBO.TBLWI_letterResponses lr with (NOLOCK) 
ON  i.fstrindexid     =  lr.fstrDLN 
AND i.fstrindextype   =  'DLN' 
AND i.fblnValid       =  1 LEFT OUTER JOIN tblWorkToReturn wr
ON t.flngKey=wr.flngWorkKey LEFT OUTER JOIN tblWorkDetail wd
ON t.flngKey=wd.flngWorkKey LEFT OUTER JOIN tblIndicator id
ON (t.flngAccountKey=id.flngAccountKey AND id.fstrIndicator='EIWTCH'),
    t2

这让它工作了,因为它在 T 表上留下了连接,而不是后面列出的 T2 表。 即使您可以指定要联接的内容,这些也不一定能确定它联接在哪个表上。 在这种情况下,由于在 FROM 中声明 t 之后的所有后续代码行都是连接, 它们都引用同一个表,T.我发现逗号有助于确定它正在连接哪个表。请注意,在声明 T2 之前没有逗号。

最新更新