日期 代号 编号 币种 金额
2007-06 A Z1 01 200
2007-07 A Z1 01 400
2007-08 A Z2 01 400 其中日期,代号,编号,币种为联合主键.需要求得这样一条记录:
2007-08 A Z1 01 400规则是:假如当前日期是:2007-08.存在"日期DTE='2007-08',代号NO='A',编号CODE='Z2',币种CCY='01' "的记录.那么需要找出:代号NO='A',币种CCY='01' 编号CODE<>'Z2'所有记录,如上面给的示例数据可以得到2条记录:
2007-06 A Z1 01 200
2007-07 A Z1 01 400
再从这2条中取一天日期DTE与当前日期最近的那条记录:
2007-07 A Z1 01 400
最后将日期DTE='2007-07'换成'2007-08',得到需要求的记录:
2007-08 A Z1 01 400这个Sql大家说说怎么写呢?
2007-06 A Z1 01 200
2007-07 A Z1 01 400
2007-08 A Z2 01 400 其中日期,代号,编号,币种为联合主键.需要求得这样一条记录:
2007-08 A Z1 01 400规则是:假如当前日期是:2007-08.存在"日期DTE='2007-08',代号NO='A',编号CODE='Z2',币种CCY='01' "的记录.那么需要找出:代号NO='A',币种CCY='01' 编号CODE<>'Z2'所有记录,如上面给的示例数据可以得到2条记录:
2007-06 A Z1 01 200
2007-07 A Z1 01 400
再从这2条中取一天日期DTE与当前日期最近的那条记录:
2007-07 A Z1 01 400
最后将日期DTE='2007-07'换成'2007-08',得到需要求的记录:
2007-08 A Z1 01 400这个Sql大家说说怎么写呢?
where 日期DTE <> 当前日期
and rownum <2
order by 日期 desc
FROM
(SELECT b.代号, b.编号, b.币种, a.日期
FROM
(SELECT 日期, 代号, 编号, 币种
FROM table1
WHERE 日期='200708') a, table1 b
WHERE b.代号=a.代号
AND b.币种=a.币种
AND b.编号<>a.编号
ORDER BY Abs(b.日期-a.日期)) c
WHERE ROWNUM<=1
/