2012-07-23 91 views
0

我有像输出数据的查询with rollup(查询是有点忙,但如果需要,我可以张贴)汇总/递归另外的SQL Server 2008

range subCounts Counts percent 
1-9  3   100  3.0 
10-19 13   100  13.0 
20-29 30   100  33.0 
30-39 74   100  74.0 
NULL  100   100  100.0 

怎么可能保持运行总和共percent?说我需要找到底部15个百分点,在这种情况下3+13=16,所以我想为要返回的最后一行读

range subCounts counts percent 
10-19 13   100  13.0 

EDIT1:这里查询

select '$'+cast(+bin*10000 + ' ' as varchar(10)) + '-' + cast(bin*10000+9999 as varchar(10)) as bins, 
    count(*) as numbers, 
    (select count(distinct patient.patientid) from patient 
    inner join tblclaims on patient.patientid = tblclaims.patientid 
    and patient.admissiondate = tblclaims.admissiondate 
    and patient.dischargedate = tblclaims.dischargedate 
    inner join tblhospitals on tblhospitals.hospitalnpi = patient.hospitalnpi 
    where (tblhospitals.hospitalname = 'X') 
    ) as Totals 
    , round(100*count(*)/cast((select count(distinct patient.patientid) from patient 
    inner join tblclaims on patient.patientid = tblclaims.patientid 
    and patient.admissiondate = tblclaims.admissiondate 
    and patient.dischargedate = tblclaims.dischargedate 
    inner join tblhospitals on tblhospitals.hospitalnpi = patient.hospitalnpi 
    where (tblhospitals.hospitalname = 'X')) as float),2) as binsPercent 


from 
(

select tblclaims.patientid, sum(claimsmedicarepaid) as TotalCosts, 
    cast(sum(claimsmedicarePaid)/10000 as int) as bin 
    from tblclaims inner join patient on patient.patientid = tblclaims.patientid 
    and patient.admissiondate = tblclaims.admissiondate 
    and patient.dischargedate = tblclaims.dischargedate 
    inner join tblhospitals on patient.hospitalnpi = tblhospitals.hospitalnpi 
    where tblhospitals.hospitalname = 'X' 
    group by tblclaims.patientid 
) as t 
group by bin with rollup 
+0

后期编辑包含查询。 – wootscootinboogie 2012-07-23 14:10:01

回答

0

好了,对于任何可能使用这个参考的人来说,我都知道我需要做什么。

我将row_number() over(bin) as rownum添加到查询并将所有这些保存为视图。

然后,我通过加入t1.rownum> = t2.rownum你可以滚动计数类的事情用

SELECT *, 
      SUM(t2.binspercent) AS SUM 
FROM t t1 
INNER JOIN t t2 ON t1.rownum >= t2.rownum 
GROUP BY t1.rownum, 
     t1.bins, t1.numbers, t1.uktotal, t1.binspercent 
ORDER BY t1.rownum 

+1

我见过另一种方式的文章,我只是不记得在哪里,对不起 – 2012-07-23 20:20:25

+0

我试图完成它没有使用视图,但没有运气到目前为止。 – wootscootinboogie 2012-07-23 20:23:17