我需要使用行号和另一个字段来订购表。 我的疑问是:
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'
如何使用rownum
和admissoindate
订购?
答案 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或标识列。