我正在尝试根据多列中的值返回行。我需要返回会员数据。每个成员都有一个“ DiagnosisID”和“ CategoryScore”。 min(DiagnosisID)为“ MostSevereDiagnosis”。我需要为每个患者返回针对每个CategoryScore的最严重的诊断。因此,例如,一个成员有两个不同的CategoryScore,因此我需要返回两个,但另一个成员具有相同的CategoryScore两次,而我只需要返回一个带有min(diagnosisid)的成员。我的代码在下面,但是我无法按CategoryScore分组,否则会收到错误消息。
我需要创建列“ IsMostSevereCategory”(我目前的情况是子句对此不正确,但我不知道该怎么做)。每个成员的min(categoryscore)以及任何空值都需要将其设置为1;但其余的必须设置为0。
当前查询:
SELECT
sq.MemberID,
sq.FirstName,
sq.LastName,
sq.DiagnosisID AS MostSevereDiagnosis,
diagnosisdescription,
DiagnosisCategoryID,
CategoryDescription,
CategoryScore,
CASE WHEN DiagnosisCategoryID IS NULL THEN 1 ELSE 0 END AS IsMostSevereCategory
FROM
(select ROW_NUMBER() OVER(PARTITION BY mem.memberid ORDER BY md.DiagnosisID ASC) AS ROWNUM,
mem.MemberID,
mem.FirstName,
mem.LastName,
md.DiagnosisID,
d.diagnosisdescription,
dc.DiagnosisCategoryID,
dc.CategoryDescription,
dc.CategoryScore
from dbo.member mem
left join dbo.Memberdiagnosis md on mem.MemberID = md.MemberID
left join Diagnosis d on md.DiagnosisID = d.DiagnosisID
left join DiagnosisCategoryMap dcm on d.DiagnosisID = dcm.DiagnosisID
left join DiagnosisCategory dc on dc.DiagnosisCategoryID = dcm.DiagnosisCategoryID) sq
WHERE ROWNUM =1
当前结果是:
MemID FIRST LAST MostSevere DiagDesc CatID CatDesc CatScore IsMostSevere
1 John Smith 2 Diag2 2 CatB 20 0
1 John Smith 4 Diag4 3 CatC 30 0
2 Jack Smith NULL NULL NULL NULL NULL 1
3 Will Smyth 3 Diag3 3 CatC 30 0
3 Will Smyth 4 Diag4 3 CatC 30 0
所以基本上我需要行1和行4的IsMostSevere = 1;并需要删除第5行。
答案 0 :(得分:1)
尝试一下,告诉我是否无效。 我对您的Row_number进行了重新处理,将您的查询转换为CTE格式,以使其更具可读性,并创建了另一个查询以获取mincat分数。
pw1.hexdigest()