Упорядочивание данных

КатюньчикКатюньчик Кривой Рог
отредактировано 21:04 Раздел: FastReport 3.0
Ребята,подскажите пож, возможно вопрос примитивный, но все же. :) Дорабатываю отчет для системы ИС-ПРО, формир. на основании запроса, который содержит несколько подзапросов. Нужно вставить условие сортировки и группировки по полю 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? Буду признательна за помощь! :)

Комментарии

  • отредактировано 21:04
    ...
    kpux.kpu_cdDol,kpux.kpu_cdPrf,kpux.kpu_cdPd,kpux.kpu_okl,kpux.kpu_fkHrs
    from kpuc1
    inner join kpuprk1 on kpuprk1.bookmark=
    ...
    

    вместо from kpuc1 пишите
    from (select kt.* from kpuc1 kt order by kt.kpu_rcd) kpuc1_
    
    и в местах обращения к таблице kpuc1 сделать через kpuc1_

    Вот вам и сортировка.
  • КатюньчикКатюньчик Кривой Рог
    отредактировано 21:04
    попробовала предложенный способ, не отработал запрос.

    Код
    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_

    Всеравно не отрабатывает. Что я делаю не так? :)
  • отредактировано 21:04
    А просто в конец запроса order by ставить пробовали?
  • КатюньчикКатюньчик Кривой Рог
    отредактировано 21:04
    Это было первое что я попробовала сделать. Не помогает. Бъет ошибку.
  • отредактировано 21:04
    У вас некорректный запрос.
    К fastreport это никак не относится.

    Для начала советую написать и оттестировать запрос, а потом уже вставлять его в отчет.
  • КатюньчикКатюньчик Кривой Рог
    отредактировано 21:04
    Дело в том,что этот запрос отрабатывает корректно без сортировки и отчет строится. Он написан разработчиками системы ИС-ПРО. Мне нужно представить отчет в другом виде. Добавить сортировку. Структуру запроса начального я не меняла, добавила только в выборку из таблицы kpux несколько полей, связь с этой таблицей уже была построена. Попробую еще делать выборки поэтапно... может,что получится... :)

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.