需要表-
Habits(conditionId,名称)
Patient(patientId,名称、性别、DoB、地址、州、邮政编码、homePhone、businessPhone、maritalStatus、职业、期限、单位、种族、registrationDate、GPNo、NaturopathNo)
PatientMetabolic (functionNo,patientId,score)
问题是-
问题-显示详细的病人(如姓名,性别,地址,邮政编码,道布)谁吸烟和有最高(最严重)的代谢功能。
(吸烟的条件是习惯表中的H1 )(代谢功能在病人代谢表functionNo中)(要找出最严重的代谢功能,我们需要创建一个评分,以告诉谁的代谢功能最强)。
我的查询-
SELECT *
FROM patient
where patientid IN (SELECT patientid,SUM(score) as totalscore
from PATIENTMETABOLIC
where patientid IN (SELECT patientid
from patienthabit
where conditionid = 'H1')
group by patientid
order by totalscore desc);错误:
ORA-00907:缺少右括号
发布于 2014-05-18 13:15:11
试试这个:
SELECT *
FROM PATIENT
WHERE PATIENTID = (SELECT PATIENTID
FROM (SELECT patientid, SUM(score)
from PATIENTMETABOLIC
where patientid IN (SELECT patientid
from patienthabit
where conditionid = 'H1')
group by patientid
order by SUM(score) desc)
WHERE ROWNUM = 1);SQLFiddle在这里
分享并享受。
发布于 2018-09-25 07:51:31
实现此目的的另一种方法是使用联接。
select * from (select p.patientid,p.name,sum(pm.score) as total from patient p join patienthabit ph on p.patientid = ph.patientid
and ph.conditionid = 'H1' Left join patientmetabolic pm
on p.patientid = pm.patientid group by p.patientid,p.name order by 3 desc) where ROWNUM = 1;发布于 2014-05-18 11:02:32
因为第一个内部查询返回耐心和总分,所以不能使用它作为针对IN操作符的列表。
此查询的结果可能与查询的结果类似:
SELECT p.*
FROM patient p JOIN
patienthabit ph ON p.patientid=ph.patientid
WHERE ph.conditionid='H1'https://stackoverflow.com/questions/23721145
复制相似问题