- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
select row_idx.row,row_idx.row_name,
sum(
case
when exists(select R_USERS_DOLGN.ID_REC
from R_USERS_DOLGN
where R_USERS_DOLGN.USER_ID = USERS.ID_USER) then 1
else 0
end) SHTAT,
---и так далее---
---...---
sum(
case
when exists(select R_USERS_DOLGN.ID_REC
from R_USERS_DOLGN
where R_USERS_DOLGN.USER_ID = USERS.ID_USER) and TAB_PLACE.TYPE_PLACE in (2, 3) then 1
else 0
end) STACZAN_v from USERS
left outer join R_USERS_DOLGN on R_USERS_DOLGN.user_id = USERS.id_user
left outer join SPR_DOLGN on SPR_DOLGN.ID_DOLGN=R_USERS_DOLGN.DOLGN_ID and
R_USERS_DOLGN.LPID = USERS.LPID and
R_USERS_DOLGN.BEG_WORK <= :O_BEG and
R_USERS_DOLGN.END_WORK >= :O_END
join TAB_PRVD on TAB_PRVD.ID_PRVD= SPR_DOLGN.PRVD_ID
right outer join (select 1 row,'Врачи – всего' row_name from rdb$database
union select 2 row,'Специалисты с высшим немедицинским образованием (т.1100 стр.122)' row_name from rdb$database
union select 3 row,'Средний медперсонал – всего (т.1100 стр.128)' row_name from rdb$database
union select 4 row,'Провизоры (т.1100 стр.175)' row_name from rdb$database
union select 5 row,'Фармацевты (т.1100 стр.176)' row_name from rdb$database
union select 6 row,'Младший медперсонал (т.1100 стр.177)' row_name from rdb$database
union select 7 row,'Прочий персонал (т.1100 стр.179)' row_name from rdb$database
union select 8 row,'Всего должностей (т.1100 стр.184)' row_name from rdb$database) row_idx
on (row_idx.row=1 and (spr_dolgn.group_dolgn=1))
or (row_idx.row=2 and ', '||(select first (1) spec_list
from spr_mkb_group_tabl_spec where num_pp=122)||',' like '%, '||tab_prvd.id_prvd||',%')
or (row_idx.row=3 and (spr_dolgn.group_dolgn=2))
or (row_idx.row=4 and (tab_prvd.id_prvd in (3,6,111,112,5003,5004,5005)))
or (row_idx.row=5 and (spr_dolgn.id_dolgn=307))
or (row_idx.row=6 and (spr_dolgn.group_dolgn=3))
or (row_idx.row=7 and (spr_dolgn.group_dolgn=4))
or (row_idx.row=8)
left outer join TAB_PLACE on TAB_PLACE.ID_PLACE = R_USERS_DOLGN.PODR_ID
where USERS.LPID = '+inttostr(LPU_CURRENT_ID)+
' group by 1,2
Что-то меня накрыло. Вообще-то для таких вещей у нас тут есть отдельная таблица. В крайнем случае можно было сделать временную таблицу.
defecate-plusplus 28.01.2016 13:07 # +6
срут самозабвенно, не следя даже за простейшими правилами по форматированию, именованию
голову не включают
и ведь ладно запрос мудак писал, но схему-то... схему - её же рахитектор должен делать, почему у него в голове такая же срань
печаль
adoconnection 28.01.2016 14:42 # 0
tucvbif 28.01.2016 18:29 # 0
Доктор, есть надежда на исцеление?
Rijen 28.01.2016 19:20 # 0
tucvbif 28.01.2016 20:01 # 0