2016-01-04 47 views
2

对于质量保证的目的,我需要提供错误记录的样本以及错误记录的总数。对于后台,由于查询结果存储在Excel recordSet对象中并输出到文本文件,因此此示例需限制为约1000条记录。这听起来非常笨重(而且是),但有其原因。查询显示返回的总行数,但结果集有限

我知道我可以做:

SELECT TOP 1000 
primaryKey 
,expectedValue 
,actualValue 
,totalErrors 
FROM errorTable 
INNER JOIN (SELECT count(*) as totalErrors FROM errorTable) AS tmp 
    ON 1 = 1 

,但我想更有效的方式,因为errorTable实际上是发现所有的错误记录,并可以得到相当昂贵计算的子查询。

+0

你也可以交叉连接,而不是使用1 = 1 – Hogan

+0

我想,第一,但保持得到一个语法错误,我仍然不知道为什么。 –

+0

好的,我发布了一个如何做交叉连接的例子,如果你有兴趣。 – Hogan

回答

2

只需使用窗口功能:

SELECT TOP 1000 primaryKey, expectedValue, actualValue, 
     COUNT(*) OVER() as totalErrors 
FROM errorTable; 
+0

Duh ...完美的作品。谢谢! –

0

你可以做一个交叉连接这样的: