我有一个代码,它以 Alert 过程开头,然后是标题、细节和尾部语句,当我使用时,为标题、细节和在标题和细节之间选择不同的是联合命令,所以我想知道我是否可以从特定列的尾部行的标题和详细信息中获取记录总数.. 现在我已经使用了
CONVERT(bigint, count(*) ) as Recordcount,
但它显示为 498 行.. 但我们最初有 475 行关于拖车行. 我认为它正在计算SQL查询行的总数..
COUNT(*)
计算数据集中的行总数;包括完全由值NULL
组成的任何行。举个例子:
WITH VTE AS(
SELECT CONVERT(int,NULL) AS N
UNION ALL
SELECT CONVERT(int,NULL) AS N
UNION ALL
SELECT CONVERT(int,NULL) AS N
UNION ALL
SELECT CONVERT(int,NULL) AS N
UNION ALL
SELECT CONVERT(int,NULL) AS N
UNION ALL
SELECT 1 AS N)
SELECT COUNT(*)
FROM VTE;
请注意,这将返回 6,而不是 1。如果你想要值 1,那么你需要使用COUNT(N)
。
如果没有示例数据,这纯粹是猜测,但我想您需要将COUNT
与CASE
表达式一起使用,以仅包含不是页眉或页脚的行。这是伪SQL,但是,它将是这样的:
COUNT(CASE WHEN <<Some expression that determines a row instead a header/footer>> THEN 1 END)
此外,没有理由使用CONVERT(BIGINT,COUNT(<<expr>>)
。如果您正在执行的计数可能返回超过2^31-1
行,请使用COUNT_BIG
。如果您不打算返回超过2^31-1
行,那么只需使用COUNT
(您返回 <500 行,因此实际上没有理由使用bigint
(。