Sql 如何在Oracle中进行自定义排序?

Sql 如何在Oracle中进行自定义排序?,sql,oracle,Sql,Oracle,Oracle查询返回的值如下面的示例所示。但我想知道联系人姓名的顺序,如admin、jack、robert,但下面的顺序不是字母顺序,同时prodid应该是与下面示例相同的组 Oracle查询: SELECT part_id, prodname, shippingaddress, contact FROM part p, address a WHERE p.part_id = a.part_id (+) AND p.quarter = a.quarter (+) AND p.quarter

Oracle查询返回的值如下面的示例所示。但我想知道联系人姓名的顺序,如admin、jack、robert,但下面的顺序不是字母顺序,同时prodid应该是与下面示例相同的组

Oracle查询:

SELECT part_id, prodname, shippingaddress, contact 
FROM part p, address a WHERE p.part_id = a.part_id (+) 
AND p.quarter = a.quarter (+) AND 
p.quarter = '2014' AND order by p.prod_id
以上查询输出:

prodid     prodname    shippingaddress    contact
-------------------------------------------------
01         computer    xxxxxx             Jack
01         computer    xxxxxx             admin
01         computer    xxxxxx             robert
03         keybord     xxxxxx             admin
03         keybord     xxxxx              jack
06         cpu         xxxx               robert
06         cpu         xxxx               admin 
06         cpu         xxx                jack 
预期产出:

prodid     prodname    shippingaddress    contact
-------------------------------------------------
01         computer    xxxxxx             admin
01         computer    xxxxxx             jack
01         computer    xxxxxx             robert
03         keybord     xxxxxx             admin
03         keybord     xxxxx              jack
06         cpu         xxxx               admin
06         cpu         xxxx               jack
06         cpu         xxx                robert

这在SQL中可能吗?

您可以定义多级顺序:

SELECT part_id, prodname, shippingaddress, contact 
FROM part p, address a WHERE p.part_id = a.part_id (+) 
AND p.quarter = a.quarter (+) AND 
p.quarter = '2014' AND order by p.prod_id, contact
使用更新的连接,例如:

SELECT part_id, prodname, shippingaddress, contact 
FROM part p
JOIN address a 
   ON p.part_id = a.part_id
   AND p.quarter = a.quarter
WHERE p.quarter = '2014' 
ORDER BY p.prod_id, contact

您可以定义多个订单级别:

SELECT part_id, prodname, shippingaddress, contact 
FROM part p, address a WHERE p.part_id = a.part_id (+) 
AND p.quarter = a.quarter (+) AND 
p.quarter = '2014' AND order by p.prod_id, contact
使用更新的连接,例如:

SELECT part_id, prodname, shippingaddress, contact 
FROM part p
JOIN address a 
   ON p.part_id = a.part_id
   AND p.quarter = a.quarter
WHERE p.quarter = '2014' 
ORDER BY p.prod_id, contact
试一试

注意: 您的查询使用旧的联接语法。。。尽量避免这种情况,并使用较新的联接语法(查找内部联接、外部联接等,而不是
(+)
语法)。

试试看

注意:
您的查询使用旧的联接语法。。。尽量避免这种情况,并使用较新的联接语法(查找内部联接、外部联接等,而不是
(+)
语法)。

添加
按prodname排序,联系
添加
按prodname排序,联系