Générer un histogramme dans SQL Server

J'utilise SQL Server 2012 et j'ai besoin de générer un histogramme, conceptuellement similaire à celui de Google.

L'idée est de split tous les prix en 100 compartiments de taille égale (en fonction du prix), puis chaque compartiment contient un certain nombre d'articles dont le prix est compris entre le minimum et le maximum du compartiment. NTILE n'a pas fonctionné – il a essayé de split des articles également (basé sur le count) parmi des seaux.

Donc, c'est ce que j'ai jusqu'ici:

select bucket, count(*) from (select cast((PERCENT_RANK() OVER(ORDER BY Price DESC)) * 100 as int) as bucket from MyTable where DataDate = '4/26/2012') t group by bucket 

Est-ce un bon moyen de produire un histogramme dans SQL Server 2012? Y at-il quelque chose de SQL Server 2012 embedded pour faire cette tâche ou une meilleure façon?

Je vous remercie

Comme ceci peut-être:

 with cte as ( select base = 1 + u + t*3 from ( select 0 as u union all select 1 union all select 2 ) T1 cross join ( select 0 as t union all select 1 union all select 2 ) T2 ), data as ( select * from ( values (1,1,2,3,3,5,7,4,2,1) ) data(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9) ) select cte.base ,case when x0>=base then 'X' else ' ' end as x0 ,case when x1>=base then 'X' else ' ' end as x1 ,case when x2>=base then 'X' else ' ' end as x2 ,case when x3>=base then 'X' else ' ' end as x3 ,case when x4>=base then 'X' else ' ' end as x4 ,case when x5>=base then 'X' else ' ' end as x5 ,case when x6>=base then 'X' else ' ' end as x6 ,case when x7>=base then 'X' else ' ' end as x7 ,case when x8>=base then 'X' else ' ' end as x8 ,case when x9>=base then 'X' else ' ' end as x9 from cte cross join data order by base desc ; 

qui donne bien cet histogramme:

 base x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 ----------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 9 8 7 X 6 X 5 XX 4 XXX 3 XXXXX 2 XXXXXXX 1 XXXXXXXXXX 

N'oubliez pas de faire pivoter vos données en une seule ligne en premier.

Pour une présentation plus compacte, concaténez les différentes colonnes de données en une seule longue string.