2013-12-12 28 views
0

我需要得到Id爲11和12分開的記錄數。然後,我必須按期間(即1,2,3,4,5)對它們進行分組,並將每個ID與它們對應的組分開。 即(1期ID = 11的計數)/(期1的ID = 12的計數)統計和劃分sql中的同一表的兩列

我已經試過了。但是這只是給了我每一個計數。我怎樣才能將它們分在同一張表中。

例子:

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其中週期= 1和度量ID = 11)/(Countvalue其中週期= 1和度量ID = 12)

+0

避免一個部門能不能給你正在尋找的結果的一個例子嗎? – user3041160

+0

我已經在我的問題的頂部提到了它。但仍然,編輯我的問題與所需的結果爲你的問題。 – user2919277

+0

你不需要這個聯合你可以放在哪裏(id = 11或id = 12)和計數(列)ingnores null!你不需要那個pNum也不爲NULL – jean

回答

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 
0
得到

不是完整的答案,但它不會讓我評論。

那豈不是更容易選擇原始查詢到工作表,然後除以PNUM其中MetricPeriod = MetricPeriod

如果你只是尋找一個跨平均每MetricID你可以只總結你PNUM每個發生的時期,然後除以總時間段?只是拋出一些想法希望這有助於。

+0

在我的原始表中,我必須計算度量標識爲12和度量標識爲11的行數,並按句點對它們進行分組。但問題是我不能直接劃分,因爲我必須加入表格來劃分。如果我加入,我不會得到行數。 – user2919277

+0

啊,我知道我恐怕我不知道答案。我只是建議你可以嘗試先完成所有的分組和計算,然後將結果集保存到其他分區的表中。 – BasicHorizon