select prc.service_price_id prc.service_param_price_id prm.pricing_model_id prm.pricing_model prm.pricing_model_short prm.pricing_model_code prc.pricing_period prc.rating_period prc.dt_from prc.dt_to s.vat_perc s.vat_free case when s.vat_free then 0. else vat_perc/100. end as vat_rate prc.price case when price*.95 > coalesce(min_price,0) then price*.95 else min_price end as discount_price/***/ min_price a.abstract_service_id s.service_id g.area_code g.area g.area_id g.analytic_code a.status_id as abstract_service_status_id u.status as abstract_service_status s.status_id as service_status_id t.status as service_status prc.status as price_status a.code m.code as modifier_code p.code as param_code a.abstract_service m.modifier_id mc.modifier_class mc.modifier_class_id m.modifier m.sort sp.service_param_id sp.min_value sp.max_value sp.incr pc.param_class_id pc.param_class ac.sort as param_class_sort ac.is_multiple p.sort as param_sort p.param p.param_id case when p.param_id IS NULL then se.measure_short else e.measure_short end as measure_short case when p.param_id IS NULL then s.measure_id else p.measure_id end as measure_id s.commercial_note from ( select t.service_param_price_id, t.price, t.min_price, t.service_param_id, t.pricing_model_id , null as service_price_id, sp.service_id, t.pricing_period, t.rating_period, t.dt_from, t.dt_to, t.status from service_param_price t join service_param sp on (t.service_param_id=sp.service_param_id) union all select null, st.price, st.min_price, null, st.pricing_model_id, st.service_price_id, st.service_id, st.pricing_period, st.rating_period, st.dt_from, st.dt_to, st.status from service_price st ) prc /*кажется, union в данном отчете бесполезен - все равно эти данные попадают в разные группировки*/ left outer join service s on (prc.service_id=s.service_id) left outer join service_param sp on (prc.service_param_id=sp.service_param_id) left outer join abstract_service a on (s.abstract_service_id=a.abstract_service_id) left outer join modifier m on (s.modifier_id=m.modifier_id) left outer join modifier_class mc on (m.modifier_class_id=mc.modifier_class_id) left outer join abstract_service_param_class ac on (sp.abstract_service_param_class_id=ac.abstract_service_param_class_id) left outer join param_class pc on (ac.param_class_id=pc.param_class_id) left outer join param p on (sp.param_id=p.param_id) left outer join measure e on (p.measure_id=e.measure_id) left outer join measure se on (s.measure_id=se.measure_id) left outer join area g on (a.area_id=g.area_id) left outer join status u on (a.status_id=u.status_id) left outer join status t on (s.status_id=t.status_id) left outer join pricing_model prm on (prc.pricing_model_id=prm.pricing_model_id) where 1=1 order by g.analytic_code , a.abstract_service , s.service_id , coalesce(m.sort,0) , m.modifier_id , coalesce(ac.sort,0) , coalesce(p.sort,0) , p.param_id --, prc.pricing_model_id #serializeJSON(temp.out)#