2015-07-02 80 views
1

此查詢工作正常,我得到(男,女)項目的列表。與計數的子查詢

SELECT dmg.dmg_Sex 
FROM Demographic dmg 
JOIN LINK lnk ON lnk.lnk_dmgID = dmg.dmg_ID 
JOIN Admission adm ON adm.adm_ID = lnk.lnk_admID 
WHERE adm.adm_ID in (SELECT DISTINCT(adm.adm_ID) 
        FROM Admission adm 
        JOIN LINK lnk ON lnk.lnk_admID = adm.adm_ID 
        JOIN DAILY_LINK dlnk ON dlnk.dlk_lnkID = lnk.lnk_ID 
        WHERE dlnk.dlk_AssessDate >= '2011/01/01' AND dlnk.dlk_AssessDate <= '2011/03/31') 

如果我這樣做,我得到的男,女結果在統計列表

SELECT dmg.dmg_Sex, COUNT (dmg.dmg_Sex) 
FROM Demographic dmg 
JOIN LINK lnk ON lnk.lnk_dmgID = dmg.dmg_ID 
JOIN Admission adm ON adm.adm_ID = lnk.lnk_admID 
WHERE adm.adm_ReferralDate >= '2011/01/01' 
AND adm.adm_ReferralDate <= '2011/03/31' 
GROUP BY dmg.dmg_Sex DESC 

但是,試圖僅僅通過增加COUNT (dmg.dmg_Sex)到第一查詢不工作,以合併這兩個查詢。這是爲什麼呢還是我失去了一些東西

SELECT dmg.dmg_Sex, COUNT (dmg.dmg_Sex) 
FROM Demographic dmg 
JOIN LINK lnk ON lnk.lnk_dmgID = dmg.dmg_ID 
JOIN Admission adm ON adm.adm_ID = lnk.lnk_admID 
WHERE adm.adm_ID in (SELECT DISTINCT(adm.adm_ID) 
        FROM Admission adm 
        JOIN LINK lnk ON lnk.lnk_admID = adm.adm_ID 
        JOIN DAILY_LINK dlnk ON dlnk.dlk_lnkID = lnk.lnk_ID 
        WHERE dlnk.dlk_AssessDate >= '2011/01/01' AND dlnk.dlk_AssessDate <= '2011/03/31') 

所需的輸出

男243
女183

輸出現在越來越













+0

什麼是你想要的輸出?第一個查詢爲每條記錄提供一行,而第二條查詢只產生兩條記錄總計數的行。請發佈樣例輸出,您希望數據如何。 –

+0

你不想分組你的組合查詢嗎?還是我誤解? –

+0

和你得到的輸出是什麼? –

回答

1

爲了能夠指望你需要做下面的SQL性別的結合SQL

GROUP BY dmg.dmg_Sex DESC 
+1

謝謝你是正確的,但@ Crazy2crack在抽籤上稍微快一點。無論如何Upvoted。 – morne

+0

不用擔心@morne,答案張貼在評論 –

+0

沒有必要,但謝謝! –

1

U應該由dmg.dmg_Sex組成。因爲如果在SELECT子句中使用聚合函數,則必須將SELECT子句中的所有非聚合字段放在GROUP BY子句中。