我需要根据查询对下表进行排序:
SELECT *
FROM Likelihood WITH (NOLOCK)
INNER JOIN Diagnosis ON Diagnosis.DiagnosisID = Likelihood.DiagnosisID
WHERE Likelihood.SessionID = (6768)
ORDER BY Likelihood.Percentage DESC
**Percentage Diagnosis Level**
100 F43.10 HIGH
83.333336 F84.5 HIGH
75 F40.9 HIGH
66.666664 F90.0 MEDIUM
50 F51.09 MEDIUM
首先按Likelihood.Percentage
降序排序。
然后在Level ='HIGH'时按诊断升序排序。诊断列是一个字符串。
当Level ='MEDIUM'时,按诊断升序排序
结果表应为:
**Percentage Diagnosis Level**
100 F43.10 HIGH
75 F40.9 HIGH
83.333336 F84.5 HIGH
50 F51.09 MEDIUM
66.666664 F90.0 MEDIUM
我尝试了此查询,但没有得到结果:
SELECT *
FROM Likelihood WITH (NOLOCK)
INNER JOIN Diagnosis ON Diagnosis.DiagnosisID = Likelihood.DiagnosisID
WHERE Likelihood.SessionID = (6768)
ORDER BY
case when Level='HIGH' and Percentage > 70 then Diagnosis.Diagnosis end
, case when Level='Medium' and Percentage between 50 and 69 then Diagnosis.Diagnosis end
, Likelihood.Percentage DESC
答案 0 :(得分:2)
如果我理解正确,您只需要按条件指定一些顺序即可。首先是百分比,然后是水平(由于字母排序,HIGH应该在MEDIUM之前),然后是诊断。 因此,
order by
Percentage DESC,
Level ASC,
Diagnosis ASC;
答案 1 :(得分:0)
这是多列排序的示例:
SELECT city,first_name,last_name
FROM
sales.customers
ORDER BY
city DESC,
first_name ASC;
有关更多指南,请点击下面的链接
https://www.sqlservertutorial.net/sql-server-basics/sql-server-order-by/