Sql server 仅获取一行,其中包含基于值的返回行-SQL Server
我有一个select查询,它通过Id返回具有不同大小写的表中的数据,如下所示: 案例1: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 |
+--------+---------+
| 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个值排序。创建第三个表,为您的大小指定数值