Как подсчитать два поля с помощью оператора Select в SQL Server 2005? - PullRequest
0 голосов
/ 12 мая 2010

Всего записей в таблице - 10.

Select count(ID) from table1 where col1 = 1 (Result is 8)
Select count(ID) from table1 where col1 = 0 (Result is 2)

Так что это та же таблица, но количество основано на другом условии. Как я могу получить два результата (количество), используя один оператор выбора?

Также производительность является большой проблемой здесь.

PS: я использую хранимую процедуру ...

EDIT: Я хочу прояснить, что приведенный выше запрос является лишь частью большой логики SP (по крайней мере, для меня). Поскольку я получил следующие ответы, это дало другую идею, чтобы достичь этого по-другому. Мой вышеупомянутый вопрос немного изменился ... Пожалуйста, помогите здесь? Это тот же col (тип bool) с истинным или ложным состоянием.

Ответы [ 2 ]

5 голосов
/ 12 мая 2010

Использование CASE:

SELECT
    SUM(CASE col1 WHEN 1 THEN 1 ELSE 0 END) AS Count1,
    SUM(CASE col1 WHEN 0 THEN 1 ELSE 0 END) AS Count0
FROM table1
1 голос
/ 12 мая 2010

Вы должны использовать подвыборы или СОЮЗЫ, я не вижу другого пути ...

...