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
| create table tab ( ID int , RANG int );
insert into tab (ID, RANG) values (1, 10), (1, 30),
(2, 1), (2, 50),
(3, 1),
(4, 50);
with cte_tab (ID, RANG) as
(
select distinct ID, 0 from tab union all
select distinct ID, 51 from tab union all
select ID, RANG from tab
)
, cte_replicate as
(
select ID
, RANG
, REPLICATE('-', RANG - 1 - lag(RANG) over(partition by ID order by RANG asc)) as rep
from cte_tab
)
select ID
, left(STRING_AGG(rep, 'X'), 50) as CLASSEMENT
from cte_replicate
group by ID;
ID CLASSEMENT
-- --------------------------------------------------
1 ---------X-------------------X--------------------
2 X------------------------------------------------X
3 X-------------------------------------------------
4 -------------------------------------------------X |
Partager