当前位置: 代码迷 >> Oracle管理 >> oracle排序有关问题
  详细解决方案

oracle排序有关问题

热度:130   发布时间:2016-04-24 04:20:34.0
oracle排序问题
现有一张表:
排序前:
名称1 名称2 数量   排序字段
B B1 10 2
B B3 20 2
B B2 30 2
A A2 50 1
A A1 10 1
A A3 5 1
C C1 2 3
C C4 6 3
C C2 8 3
C C3 1 3
按照“排序字段”排序后,但要保持“名称2”的顺序不变
排序后:
名称1 名称2 数量   排序字段
A A2 50 1
A A1 10 1
A A3 5 1
B B1 10 2
B B3 20 2
B B2 30 2
C C1 2 3
C C4 6 3
C C2 8 3
C C3 1 3
请问,这个怎么实现?谢谢!
问题:select * from table order by 排序字段  
时,好像名称2内的顺序会变。
------解决方案--------------------
引用:
现有一张表:
排序前:
名称1 名称2 数量   排序字段
B B1 10 2
B B3 20 2
B B2 30 2
A A2 50 1
A A1 10 1
A A3 5 1
C C1 2 3
C C4 6 3
C C2 8 3
C C3 1 3
按照“排序字段”排序后,但要保持“名称2”的顺序不变
排序后:
名称1 名称2 数量   排序字段
A A2 50 1
A A1 10 1
A A3 5 1
B B1 10 2
B B3 20 2
B B2 30 2
C C1 2 3
C C4 6 3
C C2 8 3
C C3 1 3
请问,这个怎么实现?谢谢!
问题:select * from table order by 排序字段  
时,好像名称2内的顺序会变。



WITH T AS
 (SELECT 'B' C1, 'B1' C2, 10 C3, 2 C4
    FROM DUAL
  UNION ALL
  SELECT 'B' C1, 'B3' C2, 20 C3, 2 C4
    FROM DUAL
  UNION ALL
  SELECT 'B' C1, 'B2' C2, 30 C3, 2 C4
    FROM DUAL
  UNION ALL
  SELECT 'A' C1, 'A2' C2, 50 C3, 1 C4
    FROM DUAL
  UNION ALL
  SELECT 'A' C1, 'A1' C2, 10 C3, 1 C4
    FROM DUAL
  UNION ALL
  SELECT 'A' C1, 'A3' C2, 5 C3, 1 C4
    FROM DUAL
  UNION ALL
  SELECT 'C' C1, 'C1' C2, 2 C3, 3 C4
    FROM DUAL
  UNION ALL
  SELECT 'C' C1, 'C4' C2, 6 C3, 3 C4
    FROM DUAL
  UNION ALL
  SELECT 'C' C1, 'C2' C2, 8 C3, 3 C4
    FROM DUAL
  UNION ALL
  SELECT 'C' C1, 'C3' C2, 1 C3, 3 C4
    FROM DUAL)
SELECT C1,C2,C3,C4 FROM (SELECT T.C1, C2, C3, C4, ROWNUM RN FROM T) ORDER BY C4, RN;
  相关解决方案