sql - T-SQL QUERY , COUNT WITH TRAILER RECORD
问题描述
我有一个代码,它以 Alert 程序开头,然后是 header、detail 和 trailer 语句,当我使用 select distinct 表示 header、detail 时,在 header 和 detail 之间有联合命令,所以我想知道我是否可以得到特定列中尾部行中的标题和详细信息的记录总数..现在我已经使用了
CONVERT(bigint, count(*) ) as Recordcount,
但它显示为 498 行 .. 但我们最初有 475 行关于拖车行。我认为它正在计算 sql 查询行的总数..
解决方案
COUNT(*)
确实计算数据集中的总行数;包括完全由 value 组成的任何行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 行,因此实际上没有理由使用 a bigint
)。
推荐阅读
- node.js - Jest 和 Nodejs:从函数中获取授权令牌
- javascript - 如何使一个部分捕捉
- android - TensorFlow Lite - 自定义模型被示例模型取代
- xml - snaplogic - 从单个记录到 csv 中的多行
- javascript - 滚动时如何解决固定位置的元素跳跃| React JS,成帧器运动
- flutter - AnimatedSwitcher 中的两个 Flutter 转换之间需要延迟
- java - 检查字符串是否仅包含非字母数字字符
- visual-studio-code - 如何拆分整个面板,而不仅仅是面板的一个选项卡?
- javascript - jQuery DateTimePicker 在 Safari 上不起作用
- wpf - 用另一个按钮更改按钮的内容