Sql 多个列的Distinct和order by

Sql 多个列的Distinct和order by,sql,sql-server,tsql,sql-order-by,row-number,Sql,Sql Server,Tsql,Sql Order By,Row Number,这是我的查询结果 我正在尝试使用不同的和多个顺序。也许我说不出来。但我的第一个按参数排序的顺序是priority1列,第二个按参数排序的顺序是具有不同Sid的点。所以, 对我来说最重要的专栏是priorty1 第二个最重要的列点 但每个sid将显示一次 我想要什么 我想要Id是7,因为在Id为1509的那些中,优先级1是最大的。 我希望Id是9,因为在Id为1510的项目中,点是最大的。 在这里阅读更多 我猜你说的“不同”只是指一个值,所以它是分组的基础 更新 从 在这里阅读更多 我猜你说

这是我的查询结果

我正在尝试使用不同的和多个顺序。也许我说不出来。但我的第一个按参数排序的顺序是priority1列,第二个按参数排序的顺序是具有不同Sid的点。所以,

对我来说最重要的专栏是priorty1

第二个最重要的列点 但每个sid将显示一次

我想要什么

我想要Id是7,因为在Id为1509的那些中,优先级1是最大的。 我希望Id是9,因为在Id为1510的项目中,点是最大的。 在这里阅读更多

我猜你说的“不同”只是指一个值,所以它是分组的基础

更新

在这里阅读更多

我猜你说的“不同”只是指一个值,所以它是分组的基础

更新

在这里,您可以使用Row_number函数为结果集指定排名或Row_顺序:

SELECT *
FROM
(
    SELECT ID,
           [Sid],
           [Point],
           [priority1],
           JoinDate,
           Title,
           Content,
           ROW_NUMBER() OVER(PARTITION BY [Sid] ORDER BY [priority1] desc, [Point] desc) AS RN
    FROM <your_resultset>
) a where a.RN = 1;
结果:

在这里,您可以使用Row_number函数为结果集指定排名或Row_顺序:

SELECT *
FROM
(
    SELECT ID,
           [Sid],
           [Point],
           [priority1],
           JoinDate,
           Title,
           Content,
           ROW_NUMBER() OVER(PARTITION BY [Sid] ORDER BY [priority1] desc, [Point] desc) AS RN
    FROM <your_resultset>
) a where a.RN = 1;
结果:

您可以使用cte和row_编号获得所需结果,如下所示

 WITH cte as
  (SELECT t1.*, ROW_NUMBER() over(PARTITION BY sid
                                  ORDER BY priority DESC, point DESC) AS rn
   FROM table1 t1)
SELECT id,
       sid,
       point,
       priority --- and other columns
FROM cte
WHERE rn = 1
结果:

您可以查看演示

您可以使用cte和row_编号获得所需的结果,如下所示

 WITH cte as
  (SELECT t1.*, ROW_NUMBER() over(PARTITION BY sid
                                  ORDER BY priority DESC, point DESC) AS rn
   FROM table1 t1)
SELECT id,
       sid,
       point,
       priority --- and other columns
FROM cte
WHERE rn = 1
结果:


您可以查看演示

我可以在Mssql中使用密集等级吗?但可能是我的SQL Server语法错误是的,您的语法错误。你还有其他想法吗?再一次尝试表达我可以在Mssql中使用稠密等级吗?但可能是我的SQL Server语法错误是的,您的语法错误。你还有别的想法吗?再一次尝试表达对这个答案的感谢!今天帮了很多忙。谢谢你的回答!今天帮了很多忙。
id  sid     point   priority
---------------------------
7   1509    10      3
9   1510    45      2