查询以显示返回的总行数,但结果集有限

时间:2016-01-04 20:45:09

标签: sql teradata qa

出于质量保证目的,我需要提供错误记录样本以及错误记录总数。对于后台,此示例需要限制为~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实际上是一个子查询,它可以找到所有的错误记录,并且计算成本非常高。

2 个答案:

答案 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