2014-09-25 52 views
0

特定行我有一个SQL Server表称为pluginProspects,我有以下几列..SQL Server 2008中 - 获取样200-300

FirstName 
LastName 
Email 
AmonutOfEmployees 
AnnualRevenue 

在这个表我行万,我想创建一个SQL语句,该语句允许我检索行200-300甚至行300-400或者我想要的行。

我用这个代码工作了一段时间,但我想添加特定的WHERE子句,它并没有显示出100个结果,它显示出我喜欢50或70或w/e取决于这些结果具体的行号

SELECT * 
FROM 
    (SELECT 
     ROW_NUMBER() OVER (ORDER BY demoID DESC) AS rownum, 
     demoID, RecordStatus, Email, FirstName, LastName, AmountOfEmployees, 
     AnnualRevenue 
    FROM 
     pluginProspects) AS Salaries1 
WHERE 
    rownum BETWEEN 1 * {STARTNUMBERHERE} - 100 AND 1 * {STARTNUMBERHERE} 
    AND (RecordStatus = '2014 Lead') 
    AND (AmonutofEmployees > 10) 
ORDER BY 
    AmountOfEmployees DESC 

正如你可以看到{STARTNUMBERHERE}我可以把100,200,300,400等创建,直到我那么在我的表添加(AmountofEmployees > 10)

还有吨,其工作完全正常寻呼效果有不到10名员工的前景,所以这有时只会显示10或20重新而不是前100个结果。

任何人都知道我应该这样做的正确方法?不,我不能使用存储过程对我想要做的,它必须是纯粹的基于SQL

+2

移动子查询 – Max 2014-09-25 19:21:15

+0

Max中的哪里clausole(rownum分页除外)可以修改并显示我的意思吗?对不起,它没有一个很好的可显示格式我只是将它复制出来,只是将它存储在一行文本框中 – eqiz 2014-09-25 19:37:07

+0

他说要在子查询中移动where子句(recordstatus和pluginprospects)。因此'FROM pluginProspects WHERE RecordStatus = ...' – 2014-09-25 19:53:46

回答

1

马特,

最大的意思改变它看起来像这样

SELECT * 
FROM 
    (SELECT 
     ROW_NUMBER() OVER (ORDER BY demoID DESC) AS rownum, 
     demoID, RecordStatus, Email, FirstName, LastName, AmountOfEmployees, 
     AnnualRevenue 
    FROM 
     pluginProspects 
    WHERE (RecordStatus = '2014 Lead') 
      AND (AmonutofEmployees > 10)) AS Salaries1 
WHERE 
    rownum BETWEEN 1 * {STARTNUMBERHERE} - 100 AND 1 * {STARTNUMBERHERE} 
ORDER BY 
    AmountOfEmployees DESC