2014-01-09 4 views
0

Сценарий: у меня есть столбец с именем «Штаты» в таблице, состояния могут быть 0,1,2,3 или 4. То, что я хочу сделать, это получить счет каждого используя WHERE State = в одном запросе.Получение счета с различными условиями в Select Query

Основная цель - показать количество записей (идентифицированных их состоянием). Например, 20 записей имеют состояние 0 и т.д.

Возможно ли это? Если да, то как я могу это достичь?

Редактировать: Я знаю о Count. Вот что я пробовал:

SELECT State, Date_Created, (SELECT COUNT(Id) FROM [ECOS].[eco].[tb_projects_details] WHERE State=1) as State_One, (SELECT COUNT(Id) FROM [ECOS].[eco].[tb_projects_details] WHERE State=2) as State_Two, (SELECT COUNT(Id) FROM [ECOS].[eco].[tb_projects_details] WHERE State=0) as State_Zero, (SELECT COUNT(Id) FROM [ECOS].[eco].[tb_projects_details] WHERE State=4) as State_Four FROM [ECOS].[eco].[tb_projects_details] WHERE Date_Created < dateadd(week,-3,getdate()); 
+1

'count (state), state', и если состояния нет, то их нет. – Peon

+0

что вы пробовали? Можно ли дать пример данных som? пожалуйста, прочитайте [как спросить] (http://stackoverflow.com/questions/how-to-ask) – Melon

+0

Давайте посчитаем, сколько одинаковых ответов мы можем получить по этому вопросу о домашнем задании. – Zane

ответ

1

Чтобы создать список значений и их подсчета вы можете сделать это:

SELECT State, COUNT(*) AS C 
FROM mytable 
GROUP BY State 

Чтобы генерировать одну строку, содержащую отсчеты значений в виде столбцов, вы можете сделать это:

SELECT 
COUNT(CASE State WHEN 0 THEN 1 ELSE NULL END) AS State_0_Count, 
COUNT(CASE State WHEN 1 THEN 1 ELSE NULL END) AS State_1_Count, 
COUNT(CASE State WHEN 2 THEN 1 ELSE NULL END) AS State_2_Count, 
COUNT(CASE State WHEN 3 THEN 1 ELSE NULL END) AS State_3_Count, 
COUNT(CASE State WHEN 4 THEN 1 ELSE NULL END) AS State_4_Count 
FROM [...] 
WHERE [...] 
+0

См. Мое редактирование. – user1601973

+0

См. Пересмотренный ответ. –

0

В следующий раз прочитайте sql для начинающих.

Select state, count(*) 
from table 
group by state 
1

Если я правильно понимаю, вы хотите сгруппировать и посчитайте:

SELECT mt.States, COUNT(*) total 
FROM  my_table mt 
GROUP BY mt.States 
1

Это будет очень легко, если вы используете group by положение после того, как where состоянии. Тогда вы получите количество каждого состояния очень легко.

SELECT state, count(*) 
FROM table_name 
GROUP BY state 
Смежные вопросы