сложный запрос

tat-besidovska
Дата: 15.06.2011 11:52:24
Делаю запрос:
select kontr_l_pr, post_pr,
count(case when vpl_main_pr = 'да' and vpl_main_pr is not null and (date_pr between @DateBeginning and @DateEnding) then 1 end) cnt_yes,
count(case when vpl_main_pr = 'на исполнении' and vpl_main_pr is not null  and (date_pr between @DateBeginning and @DateEnding)then 1 end) cnt_ni,
count(case when vpl_main_pr = 'нет' and vpl_main_pr is not null  and (date_pr between @DateBeginning and @DateEnding)then 1 end) cnt_no,
count(case when vpl_main_pr = 'просрочен' and vpl_main_pr is not null and (date_pr between @DateBeginning and @DateEnding) then 1 end) cnt_pr,
count(case when vpl_main_pr = 'постоянный контроль'and vpl_main_pr is not null and (date_pr between @DateBeginning and @DateEnding) then 1 end) cnt_pk,
count(case when (vpl_main_pr = 'да' or vpl_main_pr = 'на исполнении' or vpl_main_pr = 'нет' or vpl_main_pr = 'просрочен' or vpl_main_pr = 'постоянный контроль') and vpl_main_pr is not null and (date_pr between '01.01.2011' and @DateEnding) then 1 end) cnt_all
from
(
select kontr_l_pr, post_pr, vpl_main_pr, date_pr from pr
union
select kontr_l, post_por, vpl_main_por, date_por from Por
union
select kontr_l_prt, post_prt, vpl_main_prt, date_prt  from prt
union 
select kontr_l_rez, post_rez, vpl_main_rez, date_rez from rez
union
select kontr_l_in, post_in, vpl_main_in, date_in from in_dok
) t where vpl_main_pr is not null
group by kontr_l_pr, post_pr
order by kontr_l_pr

В результате получаю:
cnt_yes cnt_ni cnt_no cnt_pr cnt_pk cnt_all
Иванов Иван Иванович директор 0 0 0 1 0 1
Сидоров Сидор Сидорович начальник 1 1 2 3 1 4 11
Петров Петр Петрович начальник 2 0 0 0 0 0 1


Подскажите, пожалуйста, как дописать запрос, чтобы строка, где значения столбцов (cnt_yes cnt_ni cnt_no cnt_pr cnt_pk) равны нулю не выводилась в результат запроса
-=DiM@n=-
Дата: 15.06.2011 11:57:30
WHERE cnt_yes != 0 AND cnt_ni != 0 AND cnt_no != 0 AND cnt_pr != 0 AND cnt_pk != 0
tat-besidovska
Дата: 15.06.2011 11:57:38
tat-besidovska,

В результате получаю:
cnt_yes cnt_ni cnt_no cnt_pr cnt_pk cnt_all
Иванов Иван Иванович директор 0 0 0 1 0 1
Сидоров Сидор Сидорович начальник 1 1 2 3 1 4 11
Петров Петр Петрович начальник 2 0 0 0 0 0 1
здесь не понятно получилось


вот так:

kontr_l_pr| post_pr| cnt_yes| cnt_ni| cnt_no| cnt_pr| cnt_pk| cnt_all
Иванов Иван Иванович |директор| 0| 0| 0| 1| 0| 1
Сидоров Сидор Сидорович| начальник П | 1 |2| 3| 1| 4| 11
Петров Петр Петрович| начальник М |0 |0 |0 |0 |0 |1
-=DiM@n=-
Дата: 15.06.2011 11:58:07
вместо WHERE надо HAVING
tat-besidovska
Дата: 15.06.2011 12:15:47
-=DiM@n=-,

что-то неполучается, пишет, что column invalid cnt_yes, cnt_in и т.д.
может это из-за того, что это столбцы не из таблицы, а вычисляемые?
Iluminat
Дата: 15.06.2011 13:06:52
tat-besidovska
-=DiM@n=-,

что-то неполучается, пишет, что column invalid cnt_yes, cnt_in и т.д.
может это из-за того, что это столбцы не из таблицы, а вычисляемые?


Ну да, надо - having count(....) != 0 and count(...) != 0 и т.д.
tat-besidovska
Дата: 15.06.2011 13:43:14
Iluminat,большое спасибо! И вообще, всем большущее спасибо за участие, очень помогли