C# SQl按多列对数据排序
我需要对查询中的下表进行排序:C# SQl按多列对数据排序,c#,sql-server,sorting,C#,Sql Server,Sorting,我需要对查询中的下表进行排序: SELECT * FROM Likelihood WITH (NOLOCK) INNER JOIN Diagnosis ON Diagnosis.DiagnosisID = Likelihood.DiagnosisID WHERE Likelihood.SessionID = (6768) ORDER BY Likelihood.Percentage DESC 第一种排序方法是按可能性进行排序。百分比按降序排列 然后,当级别为“高”时,按诊断升序排序。诊断列
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
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
这是多列排序的一个示例:
SELECT city,first_name,last_name
FROM
sales.customers
ORDER BY
city DESC,
first_name ASC;
有关更多指南,请查看下面的链接
这是多列排序的一个示例:
SELECT city,first_name,last_name
FROM
sales.customers
ORDER BY
city DESC,
first_name ASC;
有关更多指南,请查看下面的链接
如果我理解正确,您只需指定几个order by条件即可。首先是百分比,然后是水平(由于按字母顺序排序,高应在中等之前),然后是诊断。 所以
如果我理解正确,您只需要指定几个ORDERBY条件。首先是百分比,然后是水平(由于按字母顺序排序,高应在中等之前),然后是诊断。 所以
不相关的评论:像那样加入“WITH(NOLOCK)”是非常糟糕的做法。永远不要使用它,除非你绝对地、肯定地必须这样做,并且没有其他的办法。这只是一个很坏的习惯。你说你想如何分类对我来说毫无意义。你说第一种是按百分比排序。。。嗯,每个百分比都是唯一的,所以不可能有第二种排序标准。您的示例“results”显示您首先按“Level”(高=1,中=2,可能其他任何东西都=3)排序.所以你真正要说的是按级别ASC,诊断描述排序。如果你不是这个意思,那么你的问题需要更新,因为我发现你对问题的陈述充其量是模棱两可的。无关评论:直接加入(NOLOCK)是非常糟糕的做法“就这样。永远不要使用它,除非你绝对地、肯定地必须这样做,并且没有其他的办法。这只是一个很坏的习惯。你说你想如何分类对我来说毫无意义。你说第一种是按百分比排序。。。嗯,每个百分比都是唯一的,所以不可能有第二种排序标准。您的示例“结果”显示您首先按“级别”排序(高=1,中=2,可能其他任何东西都=3)。因此,您真正说的是按级别ASC排序,诊断描述。如果您不是这个意思,那么您的问题需要更新,因为我发现您对问题的陈述最多是模棱两可的。
order by
Percentage DESC,
Level ASC,
Diagnosis ASC;