这是我的简单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
错误对我来说不是很清楚。所以请指导我纠正什么。感谢
答案 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