A表
ID X
1 X1
2 X2
B表
ID M
1 B1
2 B2
C表
ID X
1 10
1 20
2 30
2 15SELECT A.ID,M,SUM(X) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID ORDER BY A.ID
我想要这样的结果,可咋不可以? 好象是M无效,在分组中再加M就可以,可我如果B表中的列很多,并都要显出来,
请问该怎么样做呢??
ID X
1 X1
2 X2
B表
ID M
1 B1
2 B2
C表
ID X
1 10
1 20
2 30
2 15SELECT A.ID,M,SUM(X) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID ORDER BY A.ID
我想要这样的结果,可咋不可以? 好象是M无效,在分组中再加M就可以,可我如果B表中的列很多,并都要显出来,
请问该怎么样做呢??
解决方案 »
- oracle如何在查询过程中判断字段是否存在?(有原始语句分析)
- oracle存储过程
- 触发器小问题!!!
- 这句语句如何用PreparedStatement实现
- LINUX下10G BLOB字段中中文读取乱码问题
- IDE(Myeclipse)连不上oracle,sqlplus能连上?不知道怎么搞啊?
- 有关oracle查询语句性能的问题,附带执行计划。请有经验的朋友帮忙看看,谢谢。
- Oracle10G 登录OEM的问题
- 这样的字符串应该怎样截取,想炸了脑子...
- 如何配置DSN,使用odbc连接oracle ?
- 数据库把时间格式存成vchar类型,该怎么比较时间呢
- 关于HIBERNATE查询时 “返回一个JAVA对象的”问题?
前面查询的对象必须加在order by的后面
SELECT A.ID,M,SUM(X) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID ORDER BY A.ID ,M
FROM A, B,C
WHERE A.ID = B.ID
AND A.ID = C.ID
GROUP BY A.ID, b.M
别一种方法
用sum(统计列) over (partition by分组条件)
SELECT A.ID,M,SUM(X) over (order by A.ID) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID ORDER BY A.ID
这种是用在你需要输出三个表的每条纪录每个字段(符合WHERE 条件的),但又想在每条纪录后面加上按一定分组条件产生的sum
我在Oracle里测试了SELECT A.ID,M,SUM(X) over (partition by A.ID) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID .可他把全部的都显示出来了,没有求和? 后面在加GROUP BY 出错.以下是我的实际代码, 找不到办法实现用的个笨办法MAX(),可以达到效果,可这样应该是不好的好象.有啥好办法没?
select
MAX(JYUYMD),seizomst.SEIZONO,MAX(TOKUICD),MAX(seizokbnnm), MAX(suryo),MAX(JYUNO),MAX(HINNM1),
MAX(KYAKUHINBAN),MAX(OPTION4),MAX(OPTION5),MAX(optionnum1),MAX(optionnum2),MAX(optionnum3),
MAX(OPTIONDATE1),MAX(OPTIONDATE3),MAX(OPTIONDATE3),MAX(option1),MAX(option2),MAX(option3),MAX(userCo3) ,
SUM(JMAEDANH)+SUM(JYUJINH)+SUM(JATODANH) ,SUM(JMUJINH)
from seizomst ,seizokbnmst,JISEKIDATA J
WHERE seizomst.seizokbn=seizokbnmst.seizokbn AND J.SEIZONO=seizomst.SEIZONO AND
( (seizomst.SEIZOKBN <=3) OR (seizomst.SEIZOKBN =6))
GROUP BY seizomst.SEIZONO order by seizomst.seizono
(select sum(x) from c where ab.a=c.a group by a) as xx
from ab,c,abc
where ab.a=c.a
and ab.a=abc.a
这样好象可以?刚刚测试成功,可以不?
select DISTINCT ab.a,abc.c, ab.b,
(select sum(x) from c where ab.a=c.a group by a) as xx
from ab,c,abc
where ab.a=c.a
and ab.a=abc.a 你这句用sum()over
就是
select DISTINCT ab.a,abc.c, ab.b,
sum(x) over (partition by ab.a) as xx
from ab,c,abc
where ab.a=c.a
and ab.a=abc.a
sum()over 是可以,可能我刚才测试没用对