2012-07-22 47 views
0

的垃圾箱這個查詢的目的是使具有50
enter image description here命名直方圖

所以塊大小的直方圖作爲直方圖走這意味着有1013個對象與0和49之間的COUNT(*) 。

我想提出的bin念想

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,但是當我想,事情變得出路的重擊

+0

您應該用tblclaims.patientid替換count(tblclaims.patientid)。在組使用的字段上使用聚合函數是非常不尋常的。這不會中斷查詢,但會使其更難理解。 – 2012-07-22 16:00:00

+0

@GordonLinoff感謝您的洞察力。 – wootscootinboogie 2012-07-22 16:05:24

回答

2

如果唯一的問題是鑄造,你必須開投每一個數字的一​​部分:

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

我在間隔的第一部分添加了「* 50」。提問者在原始查詢中有錯誤。 – 2012-07-22 16:00:33

+0

這並不完全明白。使用這種方法的箱子被命名爲「0-1」,「50-49」等。 – wootscootinboogie 2012-07-22 16:03:33

+0

我犯了一個小錯誤。答案是簡單(編輯後) – 2012-07-22 16:05:59