如何使用行号和另一个字段来订购表

时间:2015-04-19 10:46:14

标签: sql

我需要使用行号和另一个字段来订购表。 我的疑问是:

SELECT rownum,a.hospitalnumber,a.patientid,a.admissiondate, a.patientname,c.age,c.gender,a.icdcode,b.shortname, d.unitname 
FROM icdledger a,departmentmast b,registration c,inpatient d 
WHERE a.departmentcode=b.departmentcode 
   AND a.hospitalnumber=c.hospitalnumber 
   AND a.hospitalnumber=d.hospitalnumber 
   AND a.admissiondate>=TO_DATE('01/APR/2015') 
   AND a.admissiondate<=TO_DATE('16/APR/2015') 
   AND a.icdcode='Z38.0' 
   AND b.departmentname='PAEDIATRICS'

如何使用rownumadmissoindate订购?

2 个答案:

答案 0 :(得分:1)

首先,您应该学会使用正确的join语法。一个简单的规则:永远不要在from子句中使用逗号。

其次,我没有在任何表中看到rownum,所以我假设您使用的是内置rownum的Oracle(此假设也与查询语法一致) 。 rownum值是一个顺序值,其中每一行都有自己的编号。所以:

order by rownum, a.admissiondate

order by中的第二个密钥永远不会被使用。

我想你只是想:

order by a.admissiondate

如果您想按照插入顺序排序到icdledger表(或任何其他表),那么您需要另一列,例如:

order by a.admissiondate, a.admissiontime

order by a.admissiondate, a.id

答案 1 :(得分:0)

如另一个答案所述,如果您使用的是内置的Oracle ROWNUM功能,则无法通过它进行排序。除了最终结果之外没有任何意义 - 也就是说,它不会告诉您先插入哪些行,或者有关表中行的任何其他信息。

如果您希望能够根据实际列数据中没有的内容对行进行排序,则需要更改插入或批量加载过程以向表中添加ROW_ID或标识列。