我有这个一个SQLselect a.b, '业务量', a.ALL_CITY, a.CITYA, a.CITYB, a.CITYC, '124'
from (select rownum w,
to_char(add_months(sysdate, -1), 'yyyyMM') b,
'业务量',
ALL_CITY - lag(ALL_CITY, 1, 0) over(order by acct_type) ALL_CITY,
CITYA - lag(CITYA, 1, 0) over(order by acct_type) CITYA,
CITYB - lag(CITYB, 1, 0) over(order by acct_type) CITYB
from fp_jq_db
where ZBDM = 'JF1400'
and acct_type in (to_char(add_months(sysdate, -1), 'yyyyMM'),
to_char(add_months(sysdate, -2), 'yyyyMM'))) a
where a.w = '2'其中 ACCT_TYPE 取的是 前两月 。按理 说 加了 order by acct_type 最后 正常的结果应该是 两条记录 第一条为 acct_type =to_char(add_months(sysdate, -1), 'yyyyMM') 的记录第二条为 相减的记录 相减的记录 ROWNUM为2,所以我加了条件只取相减记录的
可是 实际结果 却相反,rownum 为2的成了 acct_type =to_char(add_months(sysdate, -1), 'yyyyMM') 的 记录这个问题不知该如何解决,麻烦各位前辈指教下。谢谢
from (select rownum w,
to_char(add_months(sysdate, -1), 'yyyyMM') b,
'业务量',
ALL_CITY - lag(ALL_CITY, 1, 0) over(order by acct_type) ALL_CITY,
CITYA - lag(CITYA, 1, 0) over(order by acct_type) CITYA,
CITYB - lag(CITYB, 1, 0) over(order by acct_type) CITYB
from fp_jq_db
where ZBDM = 'JF1400'
and acct_type in (to_char(add_months(sysdate, -1), 'yyyyMM'),
to_char(add_months(sysdate, -2), 'yyyyMM'))) a
where a.w = '2'其中 ACCT_TYPE 取的是 前两月 。按理 说 加了 order by acct_type 最后 正常的结果应该是 两条记录 第一条为 acct_type =to_char(add_months(sysdate, -1), 'yyyyMM') 的记录第二条为 相减的记录 相减的记录 ROWNUM为2,所以我加了条件只取相减记录的
可是 实际结果 却相反,rownum 为2的成了 acct_type =to_char(add_months(sysdate, -1), 'yyyyMM') 的 记录这个问题不知该如何解决,麻烦各位前辈指教下。谢谢
解决方案 »
- 关于oracle数据表的注释,请教专家一个比较偏门的问题
- 请教各位,unlimited tablespace和quota 0k有何区别?
- Oracle.DataAccess.dll 的问题
- 请教SQL老手,多表连接时,是不是最好都用JOIN,避免WHERE可能引起的歧义。
- 请教一个oracle安装的奇怪问题
- 关于排序的问题
- 求助:记录中编号字段存在相互包含关系,请问如何根据某个记录的编号查到它的上层记录的编号,详情内附
- 菜鸟提问:DBMS_JOB怎么用
- 简单的一个问题,关于Oracle8 的INTERNAL PASSWORD
- 怎么自动定期备份数据库?
- 懂sql*loader的进
- 查询出一行若干列结果,遍历列数据添加到另外表中……求助~~~
--内部再嵌套一层排好序的试试:
select a.b, '业务量', a.ALL_CITY, a.CITYA, a.CITYB, a.CITYC, '124' from
(select rownum w,
to_char(add_months(sysdate, -1), 'yyyyMM') b,
'业务量',
ALL_CITY - lag(ALL_CITY, 1, 0) over(order by acct_type) ALL_CITY,
CITYA - lag(CITYA, 1, 0) over(order by acct_type) CITYA,
CITYB - lag(CITYB, 1, 0) over(order by acct_type) CITYB
from (
select * from fp_jq_db
where ZBDM = 'JF1400'
and acct_type in (to_char(add_months(sysdate, -1), 'yyyyMM'),
to_char(add_months(sysdate, -2), 'yyyyMM'))
order by acct_type
)
) a
where a.w = '2'