大家帮忙看看

[复制链接]
查看11 | 回复7 | 2011-2-18 11:43:33 | 显示全部楼层 |阅读模式
第1
select v.* from (
select t.*,
sum(t.inoutflag*t.tradecnt) over(partition by itemid order by t.tradedate,rowid) as Amounttradecnt
fromV_iteambasetradestock t ) v
where v.Amounttradecnt >5
能出来数据
第2
select count(*) from (
select t.*,
sum(t.inoutflag*t.tradecnt) over(partition by itemid order by t.tradedate,rowid) as Amounttradecnt
fromV_iteambasetradestock t ) v
能出来数据
第3
select count(*) from (
select t.*,
sum(t.inoutflag*t.tradecnt) over(partition by itemid order by t.tradedate,rowid) as Amounttradecnt
fromV_iteambasetradestock t ) v
where v.Amounttradecnt >5
出现内部错误
我总结了下 就是用 sum(t.inoutflag*t.tradecnt) over(partition by itemid order by t.tradedate,rowid) as Amounttradecnt 的字段 在where后面加条件以后 就不能在前面(第2个的count)用count max 等方法
怎么搞 如果我要 计算出 Amounttradecnt 满足where或者什么条件下的count 怎么算
回复

使用道具 举报

千问 | 2011-2-18 11:43:33 | 显示全部楼层

语法没有问题, 你用的是什么版本?
SQL> select count(*)
2from (select t.*,
3
sum(t.sal * t.deptno) over(partition by deptno order by t.sal, rowid) as Amounttradecnt
4
from emp t) v
5 where v.Amounttradecnt > 5;
COUNT(*)
----------
14
SQL>


回复

使用道具 举报

千问 | 2011-2-18 11:43:33 | 显示全部楼层
oracle 9i 不可能啊
回复

使用道具 举报

千问 | 2011-2-18 11:43:33 | 显示全部楼层
我前面2个都可以 就第3个把说内部错误
回复

使用道具 举报

千问 | 2011-2-18 11:43:33 | 显示全部楼层
估计是oracle9i release 1 吧!
回复

使用道具 举报

千问 | 2011-2-18 11:43:33 | 显示全部楼层
我知道了 是因为我 V_iteambasetradestock这个视图 好象用表是可以的 视图就出问题 不知道为什么 我视图是表和表之间left outer join 没什么特别的 就是不行 谁知道原因
回复

使用道具 举报

千问 | 2011-2-18 11:43:33 | 显示全部楼层
9201是不是BUG有点多啊,以前也有一个
http://www.itpub.net/thread-1022597-3-1.html
回复

使用道具 举报

千问 | 2011-2-18 11:43:33 | 显示全部楼层
语法没问题,如果有问题可能出在数据上,LZ使用下面的语句
select v.* from (
select t.*,
sum(t.inoutflag*t.tradecnt) over(partition by itemid order by t.tradedate,rowid) as Amounttradecnt
fromV_iteambasetradestock t ) v
where v.Amounttradecnt >5
时,单击PL/SQL中的下拉箭头,把所有数据都显示出来看有没有问题,有时可以前面一些数据查询没问题,但后面的数据就会报错,如:单行子查询返回多行的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行