2015-07-02 54 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子句中。