#sql
Вопрос:
select Count(case when col.1='aa' and col.2 = 'True' THEN ??? when col.1='bb' and col.2 = 'True' THEN ??? else 0 end) from table
Примечание — col.2 всегда должен быть «Истинным»
Я хочу, чтобы предложение select возвращало количество всех записей, в которых «aa» в кол.1 указано как » всего нет. из aa» , «bb» в колонке 2 как «общее количество bb»
Ответ №1:
Я думаю group by
, что это самый простой метод:
select col1, count(*) from t where col2 = 'True' group by col1;
Это помещает результаты в разные строки. Если вам нужны разные столбцы, то:
select sum(case when col1 = 'aa' then 1 else 0 end) as aa, sum(case when col1 = 'bb' then 1 else 0 end) as bb from t where col2 = 'True';
Я не вижу причин включать сравнение с 'True'
в case
выражение.
Ответ №2:
ты хочешь этого
select col1,count(*) from ( select case when col.1='aa' and col.2 = 'True' THEN ??? when col.1='bb' and col.2 = 'True' THEN ??? else 0 end col1 from table)set group by col1