T-SQL 2005: подсчет всех рядов и критериев соответствия строк - PullRequest
1 голос
/ 25 июня 2010

Вот сценарий:

У меня есть таблица с 3 столбцами: 'KeyColumn', 'SubKeyColumn' и 'BooleanColumn', где первые два являются первичными ключами таблицы.

Для моего запроса я хотел бы подсчитать количество строк для любого заданного значения в KeyColumn, а также узнать, какие из них имеют значение true для BooleanColumn.Сначала я хотел создать запрос, подобный следующему:

SELECT
   COUNT(*)
   ,COUNT(CASE WHEN BooleanColumn = 1 THEN 1 ELSE 0 END)
FROM
   MyTable
GROUP BY
   KeyColumn

Однако 2-я часть не работает (я не совсем уверен, почему я думал, что это будет с самого начала).Можно ли сделать что-то подобное в одном запросе?Или мне нужно сделать несколько запросов, чтобы это произошло?

Ответы [ 3 ]

5 голосов
/ 25 июня 2010

Измените COUNT на SUM во 2-й части.;)

2 голосов
/ 25 июня 2010

... CASE WHEN BooleanColumn = 1 THEN 1 ELSE NULL END ...

COUNT подсчитывает ненулевые строки.

0 голосов
/ 25 июня 2010

Вы также можете сделать SUM (CAST (BooleanColumn AS TINYINT))

...