2010-10-01 68 views
2

我想結合這兩個語句,但似乎無法做到。如何結合這兩個選擇語句

我需要3列總數。一個用於總計,月份和損失。

這裏是我迄今爲止

SELECT Count(patient1.patient_id) AS total FROM patient AS total; 
SELECT Count(patient2.patient_id) AS losses, patient2.mo AS `month` 
FROM patient AS patient2 
WHERE patient1.rx_exp BETWEEN '2010-10-01' AND '2010-11-01'; 

編輯我必須在同一行上的所有三列。

+0

您的第一個查詢沒有日期約束。那是你想要的嗎?因此,您將有全部患者與所有時間混合每月數據? – JoshD 2010-10-01 23:09:52

+0

我想要展示的是患者的預測,他們將在未來的一個月內失去。我想向他們展示患者的總數,然後計算第二個選擇查詢中的損失。 – jim 2010-10-01 23:11:38

+0

如果'PATIENT.mo'的值代表月份,爲什麼檢查'PATIENT.rx_exp'? – 2010-10-01 23:20:15

回答

1
SELECT 
    Count(patient_id) AS total, 
    Count(case when rx_exp >= '2010-10-01' 
       AND rx_exp < '2010-11-01' then 1 end) AS losses, 
    'October' AS `month` 
FROM patient; 

你可以使用這個月,但可能沒有點。

MAX(case when rx_exp >= '2010-10-01' 
    AND rx_exp < '2010-11-01' then patient2.mo end) AS `month` 
+0

您的查詢是給我正確的總數。謝謝你馬丁! – jim 2010-10-01 23:19:38

+0

馬丁,在這種情況下'1'做了什麼? – jim 2010-10-01 23:29:40

+0

'COUNT'返回傳遞給它的'NON NULL'值的數量。如果一行在你的目標月份或'NULL','CASE'語句將評估爲'1'。 '1'本身並不重要。你可以使用'0','X','patient_id'或者任何'NON NULL'值並且獲得相同的效果。 – 2010-10-01 23:33:08