我需要获取Id为11和12分开的记录数。然后我必须按期间(1,2,3,4,5)对它们进行分组,并将每个ID与相应的组分开。 即(ID = 11,周期为1)/(ID = 12,周期为1)
我试过这个。但这只是给了我一个计数。我怎样才能将它们分成同一张表。
示例:
SELECT COUNT(pNum), SK_MetricDatePeriod , SK_MetricID
FROM
(
SELECT SK_PatientID as pNum , SK_MetricDatePeriod ,SK_MetricID FROM [IntegratedCare].[report].[MetricValues] WHERE SK_MetricID = 11
UNION ALL
SELECT SK_PatientID ,SK_MetricDatePeriod , SK_MetricID FROM [IntegratedCare].[report].[MetricValues] WHERE SK_MetricID = 12
) t
WHERE pNum IS NOT NULL
GROUP BY SK_MetricID
,SK_MetricDatePeriod
ORDER BY SK_MetricID,SK_MetricDatePeriod;
结果是:
Count MetricPeriod MetricID
10199 1 11
10075 2 11
9991 3 11
9891 4 11
8952 5 11
12298 1 12
12130 2 12
12058 3 12
11943 4 12
10860 5 12
如何计算和划分。在上面的查询。
结果我看起来像:
DividedResult MetricPeriod
10199 1
10075 2
9991 3
9891 4
8952 5
DivideResult是通过划分得到的(Countvalue where period = 1 and metric id = 11)/(Countvalue where period = 1 and metric id = 12)
答案 0 :(得分:1)
有计数..是为了避免除以0
SELECT count(SK_PatientID) as pNum
, count(case when SK_MetricID = 11 then 0 end) / count(case when SK_MetricID = 12 then 0 end)
, SK_MetricDatePeriod
FROM [MetricValues]
WHERE SK_MetricID In (11, 12)
GROUP BY SK_MetricDatePeriod
Having count(case when SK_MetricID = 12 then 0 end) > 0
答案 1 :(得分:0)
不是完整的答案,但不会让我发表评论。
将原始查询选择到工作表中然后将pNum除以MetricPeriod = MetricPeriod
会不会更容易如果您只是在寻找每个MetricID的平均值,您可以将每个出现的时间段的总和相加,然后按总周期数进行分类?只是扔一些想法希望这有帮助。
答案 2 :(得分:0)
我在这里使用了案例陈述,对我有用
select CompanyCode ,'Commission Pec', Year
,sum(case when CommissionType='Commission Recevied' then JAN else 0 end)/sum(case when CommissionType='Net Payments from WM' and isnull(JAN,0)<>0 then JAN else 1 end)
from Commission_Consolidate
group by CompanyCode,Year
end