SQL (DB2) Возвращает несколько условных подсчетов в одном запросе - PullRequest
6 голосов
/ 19 июня 2009

Я пытаюсь выбрать несколько условных сводок в один результат таблицы в базе данных на основе DB2.

Пример:

SELECT COUNT(FOO) FROM T1 WHERE T1.A=1 AS A_COUNT,
SELECT COUNT(FOO) FROM T1 WHERE T1.B=2 AS B_COUNT
Ext...

Любая помощь приветствуется.

Ответы [ 4 ]

7 голосов
/ 19 июня 2009

Это будет считать возникновение каждого условия:

select sum(case when t1.a = 1 then 1 else 0 end) as A_COUNT
     , sum(case when t1.b = 2 then 1 else 0 end) as B_COUNT
  from t1
 where t1.a = 1
    or t1.b = 2
6 голосов
/ 19 июня 2009
select count(case when t1.a = 1 then foo else null end) as A_COUNT
     , count(case when t1.b = 2 then foo else null end) as B_COUNT
  from t1
 where t1.a = 1
    or t1.b = 2

Где оговорка не является обязательной, строго говоря, но может способствовать производительности. Также «else null» подразумевается, когда предложение else опущено, так что вы также можете спокойно его отключить.

1 голос
/ 19 июня 2009
select count(foo)
  from t1
 where a = 1
union
select count(foo)
  from t1
 where b = 2
....
0 голосов
/ 19 июня 2009

Это сделает это.

SELECT  A_COUNT as Type ,COUNT(FOO) FROM T1 WHERE T1.A=1, 

Union


SELECT B_COUNT as Type, COUNT(FOO) FROM T1 WHERE T1.B=2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...