我面临的麻烦试图代码下面的查询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)' –