2016-09-08 5 views
0

私は次の結果を複数年に一度に示す必要があります。したがって、2014年、2015年、そして2016年のこのレポートを実行するのではなく、3年ごとに1回実行したいと思います(@startDate & @endDate)。ロールアップが機能するかどうかは不明です。またはセットをグループ化する?ユーザーは、複数年にわたってデータを比較したいと考えています。ありがとう!複数年にわたるデータ。

select ct.srv_ct_label as service, count (distinct cln.cln_urn) as total 
from cw_domain dmn 
inner join cw_service srv on srv.srv_dmn_fk=dmn.dmn_pk 
inner join cw_client cln on cln.cln_pk=srv.srv_cln_fk 
inner join cw_subservice sbs on sbs.sbs_pk=srv.srv_sbs_fk 
inner join cw_service_category ct on ct.srv_ct_rpk=sbs.sbs_srv_ct_rfk 
where 
srv_ct_rpk in (
'001', 
'002', 
'004', 
'025', 
'040', 
'003', 
'026', 
'017', 
'016', 
'034', 
'041', 
'042', 
'018', 
'029' 
) 
and srv.srv_date >[email protected] and srv.srv_date <=endDate 
group by ct.srv_ct_label, srv_ct_rpk, srv.srv_date 
order by 
case srv_ct_rpk 
when '001' then 1 
when'040' then 2 
when '003' then 3 
when '025' then 4 
when '002' then 5 
when '004' then 6 
when '041' then 7 
when '026' then 8 
when '017' then 9 
when '034' then 10 
when '042' then 11 
when '018' then 12 
when '029' then 13 
end 

答えて

0

必要に応じてあなたのselectgroup byorder byyear(srv.srv_date) as srv_yearの列を追加します。

select year(srv.srv_date) as srv_year, ct.srv_ct_label as service, count (distinct cln.cln_urn) as total 
from cw_domain dmn 
inner join cw_service srv on srv.srv_dmn_fk=dmn.dmn_pk 
inner join cw_client cln on cln.cln_pk=srv.srv_cln_fk 
inner join cw_subservice sbs on sbs.sbs_pk=srv.srv_sbs_fk 
inner join cw_service_category ct on ct.srv_ct_rpk=sbs.sbs_srv_ct_rfk 
where 
srv_ct_rpk in (
'001', 
'002', 
'004', 
'025', 
'040', 
'003', 
'026', 
'017', 
'016', 
'034', 
'041', 
'042', 
'018', 
'029' 
) 
and srv.srv_date >[email protected] and srv.srv_date <=endDate 
group by year(srv.srv_date), ct.srv_ct_label, srv_ct_rpk, srv.srv_date 
order by year(srv.srv_date), 
case srv_ct_rpk 
when '001' then 1 
when'040' then 2 
when '003' then 3 
when '025' then 4 
when '002' then 5 
when '004' then 6 
when '041' then 7 
when '026' then 8 
when '017' then 9 
when '034' then 10 
when '042' then 11 
when '018' then 12 
when '029' then 13 
end 
0

あなたが水平な方法でそれらを比較して表示したいようです。 したがって、以下のようにselfjoinを使用することをおすすめします。

select * from 
(select ... 
from tableA join tableB join ... 
on ... 
where srv.srv_date = 2014) as a 
JOIN 
(select ... 
from tableA join tableB join ... 
on ... 
where srv.srv_date = 2015) as b ON ... 
JOIN 
(select ... 
from tableA join tableB join ... 
on ... 
where srv.srv_date = 2016) as c ON ... 
関連する問題