我有一个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 ......
注意:所有返回的表可能有不同的行和值,因此它可能是十几种情况,而行号只是一个没有意义的索引。
我只需要返回一行,其最大尺寸与表中的行相比。
例如:
任何人都可以帮我找到如何获得结果的方法吗?
解决方案可以是存储过程,函数,视图或查询。
非常感谢!
答案 0 :(得分:1)
只是回答演示文稿问题而不管逻辑是否可以使用CASE而不是ORDER BY
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