2016-12-05 3 views
-3

Я пытаюсь показать каждое уникальное значение из столбца A с подсчетом того, как часто каждое значение появляется, игнорируя, где оно имеет значение null в столбце BSQL Server показывает различные значения из одного столбца и подсчитывает количество записей для каждого отдельного

Т.х

Column A  Column B 
1    56 
1    null 
1    78 
2    null 
3    54 

Я хотел бы вернуться, который выглядел как-то

1 2 
3 1 
+2

Приходилось ли Вам Google, как COUNT значений в SQL Server? – dfundako

+1

выберите a, count (b) из t-группы с помощью счетчика (b)> 0 по порядку –

ответ

1

Вы должны использовать 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 
Смежные вопросы