2015-04-19 50 views
0

我需要使用行號和另一個字段排序表。 我的查詢是:如何使用行號和其他字段排序表

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點菜嗎?

+1

您可以使用ORDER BY rownum,TO_DATE(a.admissiondate) – Mailkov

+3

您使用的數據庫是?另外,請提供樣本數據和期望的結果。 –

回答

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 
0

正如注意到另一個答案,如果你使用的是內置的Oracle ROW NUM功能,您不能按順序排列。除了最終結果之外,它沒有任何意義 - 也就是說,它不會告訴您哪些行先被插入,或者有關表中的行的任何其他信息。

如果您希望能夠根據不在實際列數據中的某些內容對行進行排序,則需要更改插入或批量裝入過程以向表中添加ROW_ID或標識列。

相關問題