是另一个 - 无法绑定多部分标识符“xxx”

时间:2013-07-25 21:34:37

标签: sql sql-server-2008 tsql

好的,这是我的查询:

SELECT DISTINCT
    CS.CPL_Schedule_Id          AS CplScheduleId
    ,S.Schedule_Status_Id       AS ScheduleStatusId
    ,S.Record_Created           AS Created
FROM CPL_Schedule CS
    JOIN (
            SELECT TOP 1 CSL.CPL_Schedule_ID, CSL.Record_Created, CSL.Schedule_Status_Id
            FROM CPL_Schedule_Audit_Log CSL
            WHERE CSL.CPL_Schedule_ID = CS.CPL_Schedule_ID
            ORDER BY Record_Created DESC
        ) S
        ON S.CPL_Schedule_ID = CS.CPL_Schedule_ID
WHERE 
    CS.Exhibitor_Id = 1 

我收到了WHERE CSL.CPL_Schedule_ID = CS.CPL_Schedule_ID

这一行的错误
  

无法绑定多部分标识符“CS.CPL_Schedule_ID”。

对我来说,看起来这就是说嵌套查询不知道CS,这是真的吗?我在这里错过了什么?非常感谢帮助,谢谢!

1 个答案:

答案 0 :(得分:3)

看来,您需要cross apply而不是join,因此不需要ON

SELECT DISTINCT
    CS.CPL_Schedule_Id          AS CplScheduleId
    ,S.Schedule_Status_Id       AS ScheduleStatusId
    ,S.Record_Created           AS Created
FROM CPL_Schedule CS
    CROSS APPLY (
            SELECT TOP 1 CSL.CPL_Schedule_ID, CSL.Record_Created, CSL.Schedule_Status_Id
            FROM CPL_Schedule_Audit_Log CSL
            WHERE CSL.CPL_Schedule_ID = CS.CPL_Schedule_ID
            ORDER BY Record_Created DESC
        ) S
WHERE 
    CS.Exhibitor_Id = 1