Sql server 仅获取一行,其中包含基于值的返回行-SQL Server

Sql server 仅获取一行,其中包含基于值的返回行-SQL Server,sql-server,stored-procedures,stored-functions,Sql Server,Stored Procedures,Stored Functions,我有一个select查询,它通过Id返回具有不同大小写的表中的数据,如下所示: 案例1: +--------+---------+ | RowNum | Size | +--------+---------+ | 1 | large | +--------+---------+ 案例2: +--------+---------+ | RowNum | Size | +--------+---------+ | 1 | small | | 2 |

我有一个select查询,它通过Id返回具有不同大小写的表中的数据,如下所示:

案例1:

+--------+---------+
| RowNum |  Size   |
+--------+---------+
|      1 | large   |
+--------+---------+
案例2:

+--------+---------+
| RowNum |  Size   |
+--------+---------+
|      1 | small   |
|      2 | x-large |
+--------+---------+
案例3:

+--------+---------+
| RowNum |  Size   |
+--------+---------+
|      1 | small   |
|      2 | small   |
|      3 | x-large |
|      4 | large   |
+--------+---------+
案例4:

+--------+---------+
| RowNum |  Size   |
+--------+---------+
|      1 | large   |
|      2 | medium  |
|      3 | large   |
+--------+---------+
案例5:

+--------+---------+
| RowNum |  Size   |
+--------+---------+
|      1 | small   |
|      2 | x-large |
|      3 | medium  |
|      4 | large   |
+--------+---------+
案例6、7、8

注意:所有返回的表可能有不同的行和值,因此可能是十个,行号只是一个索引,没有任何意义

与表中的行相比,我只需要返回一个最大的行

例如:

在案例1中,我只需要“大”行; 在案例2中,我只需要“x-large”行; 在案例3中,我只需要“x-large”行; 在案例4中,我只需要“大”行; 在案例5中,我只需要“x-large”行; 有人能帮我找到一个方法来得到结果吗

解决方案可以是存储过程、函数、视图或查询


非常感谢

仅回答演示问题,而不考虑您可以按顺序使用案例的逻辑

select top 1 *
from 
table
order by (
case size
   when 'x-large' then 4 
   when 'large' then 3
   when 'medium' then 2
   when 'small' then 1
   else 0
end
) desc

你的rownum看起来毫无意义。基本上,您需要的是某种排序的排序,例如,为值“小”、“中”、“大”、“x大”和您可能拥有的任何其他值提供适当行号的查找表,然后您可以选择该查找表的前1个值排序。创建第三个表,为您的大小指定数值