我有一些大表,其中某些值未正确添加,重新安排所有内容的工作量太大。我基本上需要对“Number”desc进行排序,但如果Type ='Food',则Number应该增加40%。
Name | Type | Number
Cheese | Food | 50
Apple | Fruit | 30
Grapes | Berries | 60
所以在伪代码中:
从表顺序中选择*(如果type ='Food',number =(number * 1.4)),number desc
所以列表应该像这样排序:
Name | Type | Number
Cheese | Food | 70
Grapes | Berries | 60
Apple | Fruit | 30
这可能吗?
答案 0 :(得分:2)
您的伪代码几乎完全正确:
Select *
From Table
Order by (case when type = 'Food' then number * 1.4 else number end) desc;
我更喜欢case
到if
,因为它是标准SQL。