Вы должны использовать GROUP BY на Columna, и выбрать те записи, для КНА 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 выполняется в столбце A, и этот столбец также используется в предложении GROUP BY. Это означает, что мы хотим извлечь одиночные значения из ColumnA, чтобы выбрать другие столбцы, каким-то образом их агрегируя.
Это конкретное агрегирование, то есть появление значений столбца B, производится с помощью агрегатной функции COUNT (), которая сообщает, чтобы извлечь количество записей, которые соответствуют столбцу сгруппированы. В нашем случае COUNT () подсчитывает количество записей для каждого значения ColumnA. Но поскольку вы хотите исключить те записи, которые имеют значение NULL для столбца B, мы просто исключаем их из выделения через предложение WHERE: как вы можете видеть, я прошу указать те записи, где ColumnB IS NOT NULL.
Таким образом, и используя данные выборки, вы в курсе, мы получаем именно то, что вы ожидали:
1 2
3 1
Приходилось ли Вам Google, как COUNT значений в SQL Server? – dfundako
выберите a, count (b) из t-группы с помощью счетчика (b)> 0 по порядку –