1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| with tmp as (select 'C1' as cat, 'N' as rep, 45000 as nb union all
select 'C1' as cat, 'N' as rep, 875 as nb union all
select 'C1' as cat, 'P' as rep, 600 as nb union all
select 'C1' as cat, 'P' as rep, 42 as nb union all
select 'C2' as cat, 'N' as rep, 455 as nb union all
select 'C2' as cat, 'P' as rep, 640 as nb union all
select 'C2' as cat, 'P' as rep, 2 as nb union all
select 'C2' as cat, 'C' as rep, 50 as nb union all
select 'C3' as cat, 'C' as rep, 50 as nb )
, tmp2 as (
select coalesce(cat, 'Total') as cat,
sum(coalesce(N,0)) as N,
sum(coalesce(P,0)) as P, sum(coalesce(C,0)) as C
, sum(coalesce(N,0) +coalesce(P,0) +coalesce(C,0)) as Total
from ( select cat, rep, nb from tmp ) as piv pivot
(sum(nb) for rep in ([N], [P], [C])) as p
group by cat with rollup)
SELECT cat, Right('0' + CAST(N / 3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((N / 60) % 60 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST(N % 60 AS VARCHAR),2) as N
, Right('0' + CAST(P / 3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((P / 60) % 60 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST(P % 60 AS VARCHAR),2) as P
, Right('0' + CAST(C / 3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((C / 60) % 60 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST(C % 60 AS VARCHAR),2) as C
, Right('0' + CAST(Total / 3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((Total / 60) % 60 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST(Total % 60 AS VARCHAR),2) as Total
from tmp2 |
Partager