SQL server显示了错误的行号 这是我的sql
然后显示右边的行号。如果不排除该行和位置,行编号是否可以显示?请帮忙。由于采用了这种编写方式,子查询“x”将返回一个有序的数据集。返回该数据集后,以下行将其筛选为与之匹配的行:SQL server显示了错误的行号 这是我的sql,sql,sql-server,Sql,Sql Server,然后显示右边的行号。如果不排除该行和位置,行编号是否可以显示?请帮忙。由于采用了这种编写方式,子查询“x”将返回一个有序的数据集。返回该数据集后,以下行将其筛选为与之匹配的行: AND x.jid IN (SELECT CONVERT(VARCHAR, data) AS [JID] FROM dbo.Split1('33180,33265,33047', ',')) 将此条件移动到“x”子查询中应该会产生所需的结果 即 如果要从子查询中选择20行,则需要确保在对行进行编号之前/同时应用筛选行的
AND x.jid IN (SELECT CONVERT(VARCHAR, data) AS [JID] FROM dbo.Split1('33180,33265,33047', ','))
将此条件移动到“x”子查询中应该会产生所需的结果
即
如果要从子查询中选择20行,则需要确保在对行进行编号之前/同时应用筛选行的任何条件。将条件移动到子查询中:
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 OUTER JOIN dbo.callrem
ON dbo.bbajobs.jid = dbo.callrem.jid
WHERE dbo.bbajobs.jid IN (SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('33180,33265,33047', ',')) ) x
WHERE 1 < 2
AND rownumber BETWEEN 1 AND 20
行号是在应用ID上的where子句之前计算的 将ID的where子句移动到括号内的语句中,如下所示-
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 OUTER JOIN dbo.CallRem
ON dbo.BBAJobs.JID = dbo.CallRem.jid
WHERE [bbajobs].jid IN (SELECT CONVERT(VARCHAR, data) AS [JID] FROM dbo.Split1('33180,33265,33047', ','))
)
x
WHERE 1<2
AND RowNumber BETWEEN 1 AND 20
未测试,但它应该可以工作。试试这个。。。过滤掉内部查询中的行
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 OUTER JOIN dbo.CallRem
ON dbo.BBAJobs.JID = dbo.CallRem.jid
WHERE [BBAJobs].[JID] IN
(SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('33180,33265,33047', ','))
) x
WHERE 1<2
AND RowNumber BETWEEN 1 AND 20
行号1、2和3的[BBAJobs].[JID]值是多少??
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 OUTER JOIN dbo.callrem
ON dbo.bbajobs.jid = dbo.callrem.jid
WHERE dbo.bbajobs.jid IN (SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('33180,33265,33047', ',')) ) x
WHERE 1 < 2
AND rownumber BETWEEN 1 AND 20
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 OUTER JOIN dbo.CallRem
ON dbo.BBAJobs.JID = dbo.CallRem.jid
WHERE [bbajobs].jid IN (SELECT CONVERT(VARCHAR, data) AS [JID] FROM dbo.Split1('33180,33265,33047', ','))
)
x
WHERE 1<2
AND RowNumber BETWEEN 1 AND 20
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 OUTER JOIN dbo.CallRem
ON dbo.BBAJobs.JID = dbo.CallRem.jid
WHERE [BBAJobs].[JID] IN
(SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('33180,33265,33047', ','))
) x
WHERE 1<2
AND RowNumber BETWEEN 1 AND 20