Oracle排序問題

[复制链接]
查看11 | 回复3 | 2012-1-4 11:54:26 | 显示全部楼层 |阅读模式
请教各位:
如何在Oracle中实现定制排序?
比如,要对工单中下阶料的库存仓库进行排序,规则为:同一工单中的下阶料,将其库存仓库进行排序,并要以H和M开头的仓库显示在该工单的前面.SQL如下:
select we.wip_entity_name,
wro.*,
moq.SUBINVENTORY_CODE,
moq.TRANSACTION_QUANTITY
from wip_entities we,
wip_requirement_operations wro,
mtl_onhand_quantitiesmoq
where we.wip_entity_id=wro.wip_entity_id
and we.organization_id=wro.organization_id
and wro.organization_id=moq.ORGANIZATION_ID
and wro.inventory_item_id=moq.INVENTORY_ITEM_ID
and we.organization_id=572
order by we.wip_entity_name
要对以上SQL做如何修改才能实现此功能?
回复

使用道具 举报

千问 | 2012-1-4 11:54:26 | 显示全部楼层
可用decode结合substr或者case when函数将H和M开头的库位赋一个值,然后根据这个值进行排序
————————————————
SELECT we.wip_entity_name,
-- wro.*,
CASE
WHEN moq.SUBINVENTORY_CODE LIKE 'F%' THEN

'0000' ||moq.SUBINVENTORY_CODE
WHEN moq.SUBINVENTORY_CODE LIKE 'M%' THEN

'0001'|| moq.SUBINVENTORY_CODE
ELSE

moq.SUBINVENTORY_CODE
END order_by,
moq.TRANSACTION_QUANTITY
FROM wip_entities
we,
wip_requirement_operations wro,
mtl_onhand_quantitiesmoq
WHEREwe.wip_entity_id = wro.wip_entity_id
ANDwe.organization_id = wro.organization_id
ANDwro.organization_id = moq.ORGANIZATION_ID
ANDwro.inventory_item_id = moq.INVENTORY_ITEM_ID
ANDwe.organization_id = 555
--and we.wip_entity_id=1
ORDERBY we.wip_entity_name, 2
————————————————
又看了一遍你的要求,不知道是不是要先根据工单分组,然后组内物料按照库位名称排序,如果是这样的话可用rank() over() 函数实现
具体使用方法可以搜索论坛或者网络
[ 本帖最后由 onano 于 2009-12-19 16:40 编辑 ]
回复

使用道具 举报

千问 | 2012-1-4 11:54:26 | 显示全部楼层
谢谢2楼的回复,我的要求是要先根据工单分组,然后组内物料按照库位名称排序,那这样的话如何用rank() over() 函数实现呢?请指教!
回复

使用道具 举报

千问 | 2012-1-4 11:54:26 | 显示全部楼层
此问题已解决,谢谢2楼的指点!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行