出于质量保证目的,我需要提供错误记录样本以及错误记录总数。对于后台,此示例需要限制为~1000条记录,因为查询结果存储在Excel recordSet
对象中并输出到文本文件。这听起来非常笨重(并且是),但有理由。
我知道我能做到:
SELECT TOP 1000
primaryKey
,expectedValue
,actualValue
,totalErrors
FROM errorTable
INNER JOIN (SELECT count(*) as totalErrors FROM errorTable) AS tmp
ON 1 = 1
但是我想要一种更有效的方式,因为errorTable
实际上是一个子查询,它可以找到所有的错误记录,并且计算成本非常高。
答案 0 :(得分:2)
只需使用窗口功能:
SELECT TOP 1000 primaryKey, expectedValue, actualValue,
COUNT(*) OVER () as totalErrors
FROM errorTable;
答案 1 :(得分:0)
您可以像这样进行交叉连接:
SELECT TOP 1000
primaryKey,
expectedValue,
actualValue,
tmp.totalErrors
FROM errorTablem, (SELECT count(*) as totalErrors FROM errorTable) AS tmp