Счета для большого количества булевых полей в одном запросе SQL?

Существуют некоторые коммерческие инструменты: Structure101 & Lattix, который может использоваться с этой целью.

7
задан jonhobbs 25 November 2009 в 00:55
поделиться

3 ответа

Предполагая, что бит равен 1/0, вы можете SUM вместо COUNT:

SELECT SUM(Automatic) as Automatic, SUM(Smelly) as Smelly, SUM(American) as Japanese FROM ...
6
ответ дан 6 December 2019 в 08:15
поделиться

В sql server 2008 при попытке суммировать поле бита типа данных возникает следующая ошибка:

Сообщение 8117, уровень 16, состояние 1, строка 10

бит типа данных операнда недействителен для оператор суммы.

, так что вы можете попробовать следующее:

SELECT SUM(CAST(Automatic AS TINYINT)) as Automatic, SUM(CAST(Smelly AS TINYINT)) as Smelly, SUM(CAST(American AS TINYINT)) as Japanese FROM YourTable
12
ответ дан 6 December 2019 в 08:15
поделиться

Если это еще не 1/0, то, исходя из истинного значения, вы можете сделать это:

  Select
     Sum(Case When Automatic = truevalue Then 1 Else 0 End) as Automatic,
     Sum(Case When Smelly = truevalue   Then 1 Else 0 End) as Smelly,
     Sum(Case When American = truevalue   Then 1 Else 0 End) as American,
     Sum(Case When Noisy = truevalue   Then 1 Else 0 End) as Noisy
  From Table
4
ответ дан 6 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: