SQL Server多部分标识符问题

时间:2014-02-14 14:15:32

标签: sql sql-server

这是我的简单SQL,但是当我运行它时,我收到了错误

  

无法绑定多部分标识符“bbajobs.jid”。

这是我的sql

SELECT *
FROM (
    SELECT Row_number() OVER (
            ORDER BY [bbajobs].JID
            ) AS RowNumber
        ,[BBAJobs].[JID]
        ,[AccountReference] AS [Acc Ref]
        ,[BBAJobs].[OEReference] AS [OERef]
        ,[JobType]
        ,[JobState]
        ,[JobShippedDate]
        ,[UPSShippingNumber]
        ,[CustomerName] [Customer Name]
        ,[ContactName] [Contact Name]
        ,[Telephone]
        ,[JobDescription]
        ,[CallRem].[rem]
        ,[CallRem].[callStatus]
        ,[CallRem].[ShopRemarks]
        ,CustomerNotes
        ,ShopNotes
        ,RecievedDate
        ,UserName
    FROM dbo.BBAJobs
    LEFT JOIN dbo.CallRem ON dbo.BBAJobs.JID = dbo.CallRem.jid
    ) x
WHERE 1 < 2
    AND bbajobs.jid IN (
        SELECT CONVERT(VARCHAR, data) AS [JID]
        FROM dbo.Split1('33180,33265,33047', ',')
        )
    AND RowNumber BETWEEN 1
        AND 20

错误对我来说不是很清楚。所以请指导我纠正什么。感谢

2 个答案:

答案 0 :(得分:2)

您有一个名为x的子查询,而不是bbajobs s。您需要更改where子句:

WHERE 1 < 2
    AND x.jid IN (
        SELECT CONVERT(VARCHAR(255), data) AS [JID]
        FROM dbo.Split1('33180,33265,33047', ',')
        )
    AND RowNumber BETWEEN 1 AND 20;

我还在varchar()函数调用中为convert()添加了一个长度。 从不使用varchar()没有长度。这可能会引入很难调试的问题。

答案 1 :(得分:1)

        ,UserName
    FROM dbo.BBAJobs
    LEFT JOIN dbo.CallRem ON dbo.BBAJobs.JID = dbo.CallRem.jid
    ) x
WHERE 1 < 2
    AND bbajobs.jid IN (       --<-- Now this is X.jid since it is coming from X
        SELECT CONVERT(VARCHAR, data) AS [JID]
        FROM dbo.Split1('33180,33265,33047', ',')
        )
    AND RowNumber BETWEEN 1
        AND 20

正确的方式将是

        ,UserName
    FROM dbo.BBAJobs
    LEFT JOIN dbo.CallRem ON dbo.BBAJobs.JID = dbo.CallRem.jid
    ) x
WHERE 1 < 2
    AND x.jid IN (       --<-- Now this is X.jid since it is coming from X
        SELECT CONVERT(VARCHAR, data) AS [JID]
        FROM dbo.Split1('33180,33265,33047', ',')
        )
    AND RowNumber BETWEEN 1
        AND 20