我试图显示列A中的每个唯一值,并计算每个值出现的频率,忽略它在列中的值为null的位置乙SQL Server显示一列中的不同值,并计算每个不同的条目数
即
Column A Column B
1 56
1 null
1 78
2 null
3 54
我想一回,看上去像
1 2
3 1
我试图显示列A中的每个唯一值,并计算每个值出现的频率,忽略它在列中的值为null的位置乙SQL Server显示一列中的不同值,并计算每个不同的条目数
即
Column A Column B
1 56
1 null
1 78
2 null
3 54
我想一回,看上去像
1 2
3 1
你应该使用GROUP BY对ColumnA,并选择WH这些记录ich ColumnB不是NULL。下面的脚本完成了你的请求,我已经包含了一些解释
CREATE TABLE Test(ColumnA INT, ColumnB INT)
INSERT INTO Test(ColumnA, ColumnB) VALUES (1, 56),
(1, null),
(1, 78),
(2, null),
(3, 54)
SELECT ColumnA, COUNT(*)
FROM TEST WHERE ColumnB IS NOT NULL
GROUP BY ColumnA
DROP TABLE Test
感兴趣的部分是SELECT指令。脚本的其余部分仅适用于简单表格的创建和填充,就像您正在谈论的那个表格一样。
请注意SELECT是在ColumnA上进行的,并且该列也用于GROUP BY子句中。这意味着我们想要从ColumnA中提取单个值,以便选择其他列,并以某种方式进行汇总。
该特定聚合(即ColumnB的值的出现)由聚合函数COUNT()进行,该聚合函数告知提取与分组列相匹配的那些记录的数量。在我们的案例中,COUNT()计算ColumnA每个值的记录数量。 但是,既然你想排除那些对ColumnB有NULL值的记录,我们只需通过WHERE子句将它们从选择中排除出去:正如你所看到的,我要求那些ColumnB不为NULL的记录。
通过这种方式,并使用你张贴的所有样本数据中,我们将获得正是你所期待的:
1 2
3 1
你碰巧谷歌如何在SQL Server的计数值? – dfundako
选择一个,计数(b)从t组中计数(b)> 0顺序a –