Упорядочивание данных
Катюньчик
Кривой Рог
Ребята,подскажите пож, возможно вопрос примитивный, но все же. Дорабатываю отчет для системы ИС-ПРО, формир. на основании запроса, который содержит несколько подзапросов. Нужно вставить условие сортировки и группировки по полю kpux.kpu_cdPrf (упорядочить данные по коду профессии). В отчет выбираются различные данные о средней зарплате по профессиям в выбранных подразделениях. Данные выбрала,условие для бэнда groupheader задала - поле код профессии(Query1.kpu_cdPrf). Нужно упорядочить выбранные записи, добавить order by. Привожу текст запроса Query1:
select kpuc1.kpu_rcd,kpuk1.kpu_nmr,kpux.kpu_tn,kpuc1.kpu_cdpol,
kpuc1.kpu_fio,kpuprk1.kpuprkz_pd,podr.sprpdr_nmfull,kpuc1.kpu_dtroj,
kpuc1.kpu_dtpst,kpuc1.kpu_dtuvl,dol.sprd_nmfull,kpuprk1.kpuprkz_okl,
kpuprk1.kpuprkz_kfcmt,a.spr_nm as SO, b.spr_nm as SPST,kpuc1.kpu_cdnlp,
c.spr_nm as KAT,d.spr_nm as ZV,e.spr_nm as GR,f.spr_nm as RN, g.spr_nm as CN,
kpux.kpu_cdDol,kpux.kpu_cdPrf,kpux.kpu_cdPd,kpux.kpu_okl,kpux.kpu_fkHrs
from kpuc1
inner join kpuprk1 on kpuprk1.bookmark=
(
select max(p1.bookmark)
from kpuprk1 p1
where p1.kpu_rcd=kpuc1.kpu_rcd
and p1.kpuprkz_dtv=
(
select max(p2.kpuprkz_dtv)
from kpuprk1 p2
where p2.kpu_rcd=kpuc1.kpu_rcd
and p2.kpuprkz_dtv<= T
)
)
inner join kpuk1 on kpuc1.kpu_rcd=kpuk1.kpu_rcd
inner join kpux on kpuc1.kpu_rcd=kpux.kpu_rcd
left join sprpdr podr on kpuprk1.kpuprkz_pd=podr.sprpdr_pd
left join sprdol dol on kpuprk1.kpuprkz_dol=dol.sprd_cd
left join pspr a on kpuprk1.kpuprkz_sysop=a.spr_Cd and a.sprspr_cd=787202
inner join payvo1 on a.spr_Cd=payvo1.vo_cd and payvo1.vo_grp=1
left join pspr b on kpuprk1.kpuprkz_spst=b.spr_Cd and b.sprspr_cd=547
left join pspr c on kpuprk1.kpuprkz_kat=c.spr_cd and c.sprspr_cd=549
left join pspr d on kpuprk1.kpuprkz_zv=d.spr_Cd and d.sprspr_Cd = 531
left join pspr e on kpuprk1.kpuprkz_RejWr=e.spr_cd and e.sprspr_Cd =786695
left join pspr f on kpuprkz_rn=f.spr_cd and f.sprspr_cd=559
left join pspr g on kpuprkz_cn=g.spr_cd and g.sprspr_cd=560
where {fn MOD({fn TRUNCATE(KPUC1.KPU_FLG/2,0)},2)}=0
and podr.sprpdr_dt=
(
select max(pp.sprpdr_dt)
from sprpdr pp
where pp.sprpdr_dt<=:DT1
and pp.sprpdr_pd=kpuprk1.kpuprkz_pd
)
Куда именно добавить order by? Буду признательна за помощь!
select kpuc1.kpu_rcd,kpuk1.kpu_nmr,kpux.kpu_tn,kpuc1.kpu_cdpol,
kpuc1.kpu_fio,kpuprk1.kpuprkz_pd,podr.sprpdr_nmfull,kpuc1.kpu_dtroj,
kpuc1.kpu_dtpst,kpuc1.kpu_dtuvl,dol.sprd_nmfull,kpuprk1.kpuprkz_okl,
kpuprk1.kpuprkz_kfcmt,a.spr_nm as SO, b.spr_nm as SPST,kpuc1.kpu_cdnlp,
c.spr_nm as KAT,d.spr_nm as ZV,e.spr_nm as GR,f.spr_nm as RN, g.spr_nm as CN,
kpux.kpu_cdDol,kpux.kpu_cdPrf,kpux.kpu_cdPd,kpux.kpu_okl,kpux.kpu_fkHrs
from kpuc1
inner join kpuprk1 on kpuprk1.bookmark=
(
select max(p1.bookmark)
from kpuprk1 p1
where p1.kpu_rcd=kpuc1.kpu_rcd
and p1.kpuprkz_dtv=
(
select max(p2.kpuprkz_dtv)
from kpuprk1 p2
where p2.kpu_rcd=kpuc1.kpu_rcd
and p2.kpuprkz_dtv<= T
)
)
inner join kpuk1 on kpuc1.kpu_rcd=kpuk1.kpu_rcd
inner join kpux on kpuc1.kpu_rcd=kpux.kpu_rcd
left join sprpdr podr on kpuprk1.kpuprkz_pd=podr.sprpdr_pd
left join sprdol dol on kpuprk1.kpuprkz_dol=dol.sprd_cd
left join pspr a on kpuprk1.kpuprkz_sysop=a.spr_Cd and a.sprspr_cd=787202
inner join payvo1 on a.spr_Cd=payvo1.vo_cd and payvo1.vo_grp=1
left join pspr b on kpuprk1.kpuprkz_spst=b.spr_Cd and b.sprspr_cd=547
left join pspr c on kpuprk1.kpuprkz_kat=c.spr_cd and c.sprspr_cd=549
left join pspr d on kpuprk1.kpuprkz_zv=d.spr_Cd and d.sprspr_Cd = 531
left join pspr e on kpuprk1.kpuprkz_RejWr=e.spr_cd and e.sprspr_Cd =786695
left join pspr f on kpuprkz_rn=f.spr_cd and f.sprspr_cd=559
left join pspr g on kpuprkz_cn=g.spr_cd and g.sprspr_cd=560
where {fn MOD({fn TRUNCATE(KPUC1.KPU_FLG/2,0)},2)}=0
and podr.sprpdr_dt=
(
select max(pp.sprpdr_dt)
from sprpdr pp
where pp.sprpdr_dt<=:DT1
and pp.sprpdr_pd=kpuprk1.kpuprkz_pd
)
Куда именно добавить order by? Буду признательна за помощь!
Комментарии
вместо from kpuc1 пишите и в местах обращения к таблице kpuc1 сделать через kpuc1_
Вот вам и сортировка.
Код
from (select kt.* from kpuc1 kt order by kt.kpu_rcd) kpuc1_
Выводит ошибку, что нельзя использовать предложение order by во встроенных запросах (файл с ошибкой прилагаю).
Попробовала простой запрос:
select kp.kpu_cdDol,kp.kpu_cdPrf,kp.kpu_cdPd,kp.kpu_okl,kp.kpu_fkHrs
from (select kp.* from kpux order by kp.kpu_cdPrf ) kpux_
Всеравно не отрабатывает. Что я делаю не так?
К fastreport это никак не относится.
Для начала советую написать и оттестировать запрос, а потом уже вставлять его в отчет.