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)#