来自IN运算符的值的备用行

时间:2018-01-19 18:14:57

标签: oracle

这可能吗?

我有一个示例查询:

select vehicle_name 
from   vehicles
where  vehicle_name in ('TOYO', 'HOND');

我在IN运算符子句中可能有很多vehicle_name。它返回的结果在下面给出的屏幕截图中(屏幕截图1)。 我想要的是在第二个截图(截图2)中,第一行应该是HOND而第二行应该是TOYO。 (基于字母顺序)第三行应为HOND,第四行应为TOYO。等等等等。换句话说,两个HOND或两个TOYO不应该一个接一个地到达结果的末尾,而没有找到替代的vehicle_name。

谢谢,

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用分析函数ROW_NUMBER()分别为每个vehicle_name生成序列号,并将其用于排序。您不需要将该功能添加到SELECT - 您可以直接在ORDER BY中使用该功能。

SELECT   vehicle_name
FROM     vehicles
WHERE    vehicle_name in ('HOND', 'TOYO')
ORDER BY row_number() over (partition by vehicle_name order by null), vehicle_name
;