此查询工作正常,我得到(男,女)项目列表。
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 :(得分:1)
你应该按dmg.dmg_Sex
分组。因为如果在SELECT子句中使用聚合函数,则必须使SELECT子句中的所有非聚合字段都在GROUP BY子句中。
答案 1 :(得分:1)
为了能够计算性别,您需要对组合SQL
执行以下SQLGROUP BY dmg.dmg_Sex DESC