查询错误:无法绑定多部分标识符“XYZ”

时间:2014-11-26 15:07:51

标签: sql sql-server inner-join alias

只是一个简单的问题.. 我有以下sql查询,它在执行时抛出错误。此查询使用内部联接与单个表。请帮忙,为什么会在ON语句中抛出错误?

SELECT OutOps.MachineId, OutOps.CBPOsVersion, OutOps.LastTimeStamp
FROM  CBPOperationStatsDaily AS OutOps
INNER JOIN
    (SELECT MAX(LastTimeStamp) , MachineId
    FROM CBPOperationStatsDaily AS InOps
    GROUP BY InOps.MachineID)
ON (InOps.LastTimeStamp=OutOps.LastTimeStamp)

编辑:添加了一个缺失的括号,仍然失败。

编辑:找到解决方案,抱歉管理员没有准确解决问题。

解决: 两个错误,第一个没有命名MAX Column,第二个没有在InOps中使用'ON' statement错误。对于Join name(ON),将使用外部表别名,而使用GROUP BY InOps

2 个答案:

答案 0 :(得分:3)

对于子查询,您缺少InOps的表别名,而对于max(LastTimeStamp)列,则使用别名

SELECT OutOps.MachineId, OutOps.CBPOsVersion, OutOps.LastTimeStamp
FROM  CBPOperationStatsDaily AS OutOps
INNER JOIN
    (  SELECT MAX(LastTimeStamp) as LTS , MachineId
       FROM CBPOperationStatsDaily
       GROUP BY MachineID) AS InOps
ON (InOps.LTS=OutOps.LastTimeStamp)

答案 1 :(得分:1)

更改连接表的别名InOps的位置:

SELECT OutOps.MachineId, OutOps.CBPOsVersion, OutOps.LastTimeStamp FROM  CBPOperationStatsDaily AS OutOps INNER JOIN
    (SELECT MAX(LastTimeStamp) as LastTimeStamp , MachineId
    FROM CBPOperationStatsDaily
    GROUP BY MachineID) as InOps ON (InOps.LastTimeStamp=OutOps.LastTimeStamp)