Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQl按多列对数据排序_C#_Sql Server_Sorting - Fatal编程技术网

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;