2014-01-08 5 views
0

У меня есть таблицазначение Counting из разных столбцов

school code school_name subcode1 subcode2 subcode3 
001    xyz  56  55  54 
002    abc  55  56  54 
003    xyz  54  55  56 

Пусть выполнено 56 = английский или 55 = Hindi, и я хочу, чтобы проверить, что школьный хуг это иметь сколько английский предмет или сколько хинди объекта и т.п.

Я использовал count(*) функции от того, где состояния как:

select count(*) 
from schooltable 
where (subcode1 = '55' or subcode2 = '55' or subcode3 = 55) 
    and school_name='abc' 

Но это дает только один результат я хочу получить все записи о всех школах и хочет, чтобы вставить его, как т его

scode schoolname sub sub sub 
       eng hindi history 
001  abc  3  2  3 

Требуется помощь.

+0

Является ли «школа код» первичный ключ, и вы хотите группировку на «school_name»? – faester

ответ

0

вы могли бы сделать условную сумму, то вроде этого

select sum(case when subcode1='55' or subcode2='55' or subcode3=55 then 1 else 0 end) as hindi, 
     sum(case when subcode1='56' or subcode2='56' or subcode3=56 then 1 else 0 end) as english 
from schooltable 
--where school_name='abc' (not sure if you really require this constraint, although you have it in your question) 

вы можете добавить предложения GROUP BY, если это необходимо, но это будет зависеть от ваших конкретных требований, структуры базы данных, первичных ключей и т.д. Но выше, по крайней мере, вы начнете.

+0

Вместо «где» я думаю, что OP хочет получить имя группы GROUP BY. – faester

+0

OP также имеет предложение WHERE. Нет предложения WHERE или GROUP BY, казалось бы, имеет больше смысла, но это то, что OP имел в своем вопросе. Я считаю, что он в основном интересуется частью условной суммы. – user1321471

0

Попробуйте это,

select school_name,count(*) as TotalSub from schooltable 
    group by school_name, subcode1,subcode2,subcode3 
    having school_name = 'abc' 
Смежные вопросы