Sql 直方图的分类单元命名

Sql 直方图的分类单元命名,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,此查询旨在生成仓位大小为50的直方图。 因此,直方图表示有1013个对象的计数(*)介于0和49之间 我想让垃圾桶读起来像 0-49 1013 50-99 2147 100-149 1571 我的尝试不是放弃做我需要的 select interval + ' - '+interval*50-1 as bin,count(*) as number from ( select count(tblclaims.patientid) as co

此查询旨在生成仓位大小为50的直方图。

因此,直方图表示有1013个对象的计数(*)介于0和49之间

我想让垃圾桶读起来像

0-49           1013
50-99          2147
100-149        1571
我的尝试不是放弃做我需要的

select interval + ' - '+interval*50-1 as bin,count(*) as number from
(

select  count(tblclaims.patientid) as counts, count(tblclaims.patientid)/50 as interval 
from tblclaims
inner join patient on patient.patientid=tblclaims.patientid
and patient.admissiondate = tblclaims.admissiondate
and patient.dischargedate=tblclaims.dischargedate
group by tblclaims.patientid


) as t
group by interval
order by bin

我知道这会将
interval+'-'
内容转换为varchar,但当我尝试将其转换为异常时

如果唯一的问题是转换,则必须将每个数字部分分开:

select cast(interval*50 as nvarchar(max)) + '-' + cast(interval*50+49 as nvarchar(max))

您应该用tblclaims.patientid替换count(tblclaims.patientid)。在group by使用的字段上使用聚合函数是相当不寻常的。这不会打断查询,但会使其更难理解。@GordonLinoff感谢您的洞察力。我在间隔的第一部分添加了“*50”。提问者在最初的提问中有错误。这不太明白。使用这种方法的箱子被命名为
0-1
50-49
,等等。我有一个AHA!那一刻,我本想亲自回答,但你抢先了我一步。干得好:)