我面臨的麻煩試圖代碼下面的查詢DISTINCT:ROWNUM和在Oracle
SELECT id,
contractnumber,
partyid,
entity,
product,
fecha
FROM (
SELECT DISTINCT (contractdet.id),
contractdet.contractnumber,
contractdet.partyid,
contractdet.entity,
contractdet.product,
contractdet.fecha,
ROWNUM AS rnumber
FROM contractdet
INNER JOIN contractcust ON contractcust.contractdet_id = contractdet.id
INNER JOIN customerdet ON customerdet.partyid = contractdet.partyid
WHERE TO_CHAR(contractdet.fecha, 'YYYYMM') <= TO_CHAR(ADD_MONTHS(TO_DATE(20160828, 'YYYYMMDD'), -3), 'YYYYMM')
AND contractdet.product = 'TC'
ORDER BY contractdet.id ASC
)
WHERE rnumber BETWEEN ? AND ?
ORDER BY id
我用它在一段java代碼,以網頁的過程中,重複的查詢和檢索1000個結果每一次。我遇到的主要問題是,DISTINCT命令僅適用於我處於的時間間隔,而不適用於整個結果集,因此當我混合所有查詢的輸出時,它會檢索重複的行。
努力設置您的查詢格式。 –
'DISTINCT'是***不是***功能。它始終適用於查詢中的所有**列。 –
另外:'TO_DATE(20160828,..)'是錯誤的。 'to_date()'需要一個字符串('varchar')而不是一個數字,你不需要'to_date()'。表達式也可以簡化爲:ADD_MONTHS(DATE'2016-08-28',-3)' –