计数 - SQL服务器
问题描述:
我的脚本如下计数 - SQL服务器
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;