繁体   English   中英

计算临时表返回的记录数-SQL Server

[英]Count number of records returned by temp table - SQL Server

我的脚本如下

CREATE TABLE #t (Id int, Name varchar(10))
INSERT INTO #t VALUES (1, 'A')
INSERT INTO #t VALUES (1, 'B')
INSERT INTO #t VALUES (1, 'C')
INSERT INTO #t VALUES (1, 'D')
INSERT INTO #t VALUES (2, 'E')

SELECT COUNT(0)FROM (SELECT COUNT(0) FROM #t GROUP BY Id) a

但我收到一个错误

消息8155,级别16,状态2,第5行没有为“ A”的第1列指定列名。

使用子查询时,所有列都需要指定名称:

SELECT COUNT(0)
FROM (SELECT COUNT(0) as cnt FROM #t GROUP BY Id
     ) a;

但是,一种更简单的编写方法是:

SELECT COUNT(DISTINCT id)
FROM #t;

实际上,这并不完全相同 您的版本将计算NULL值,但事实并非如此。 确切的等效项是:

SELECT COUNT(DISTINCT id) + MAX(CASE WHEN id IS NULL THEN 1 ELSE 0 END)
FROM #t;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM