遇到个很奇怪的分组求和问题,有谁能解答一下吗?谁遇到过 本帖最后由 aaabbb1123 于 2011-04-20 21:06:21 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 m_debit_amt这个值是什么类型? 表结构如下-- Create tablecreate table BDPC_SUB_CONVERT( SUB_TYPE VARCHAR2(1), OLD_SUB_CODE VARCHAR2(10), OLD_SUB_NAME VARCHAR2(60), NEW_SUB_CODE VARCHAR2(10), NEW_SUB_NAME VARCHAR2(60), CVT_TYPE VARCHAR2(1), DATA_DATE VARCHAR2(10))--------------------------------- Create tablecreate table BDPF_SUB_ACCOUNT( DATA_DATE VARCHAR2(10), BRAN_CODE VARCHAR2(10), CURR_CODE VARCHAR2(2), SUB_CODE VARCHAR2(8), LAST_Y_DEBIT_BAL NUMBER(16,2), LAST_Y_CREDIT_BAL NUMBER(16,2), Y_DEBIT_AMT NUMBER(16,2), Y_CREDIT_AMT NUMBER(16,2), LAST_M_DEBIT_BAL NUMBER(16,2), LAST_M_CREDIT_BAL NUMBER(16,2), M_DEBIT_AMT NUMBER(16,2), M_CREDIT_AMT NUMBER(16,2), LAST_T_DEBIT_BAL NUMBER(16,2), LAST_T_CREDIT_BAL NUMBER(16,2), T_DEBIT_AMT NUMBER(16,2), T_CREDIT_AMT NUMBER(16,2), LAST_D_DEBIT_BAL NUMBER(16,2), LAST_D_CREDIT_BAL NUMBER(16,2), D_DEBIT_AMT NUMBER(16,2), D_CREDIT_AMT NUMBER(16,2), DEBIT_BAL NUMBER(16,2), CREDIT_BAL NUMBER(16,2), LAST_Y_COUNT INTEGER, Y_OPEN_COUNT INTEGER, Y_CLOSE_COUNT INTEGER, LAST_M_COUNT INTEGER, M_OPEN_COUNT INTEGER, M_CLOSE_COUNT INTEGER, LAST_T_COUNT INTEGER, T_OPEN_COUNT INTEGER, T_CLOSE_COUNT INTEGER, LAST_D_COUNT INTEGER, D_OPEN_COUNT INTEGER, D_CLOSE_COUNT INTEGER, ACCT_COUNT INTEGER, Y_DEBIT_CNT INTEGER, Y_CREDIT_CNT INTEGER, M_DEBIT_CNT INTEGER, M_CREDIT_CNT INTEGER, T_DEBIT_CNT INTEGER, T_CREDIT_CNT INTEGER, D_DEBIT_CNT INTEGER, D_CREDIT_CNT INTEGER, SUM_DEBIT_ACCUM NUMBER(16,2), SUM_CREDIT_ACCUM NUMBER(16,2), M_DEBIT_ACCUM NUMBER(16,2), M_CREDIT_ACCUM NUMBER(16,2), S_DEBIT_ACCUM NUMBER(16,2), S_CREDIT_ACCUM NUMBER(16,2), Y_DEBIT_ACCUM NUMBER(16,2), Y_CREDIT_ACCUM NUMBER(16,2), LAST_UPD_DATE VARCHAR2(10)) 自己结贴....ORACLE BUG ....group by 求和...如果不用加order by有时候会报错..加上order by之后此问题解决 group by不一定要加order by啊. 听说是Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 的一个bug,group by后没有排序,以前的版本默认是排序的,具体为什么求和跟排序有关,这就orcle的内部实现问题了 我是楼主....查阅完相关资料后,总结下吧Oracle Database 10g R2 .4以下的版本都有这个问题...是由于GROUP BY 排序使用HASH值...不是像9I一样使用SORT...具体原因我也不清楚,反正网上都这么说的然后有个参数可以改为不用HAHS排序来解决这个问题,参数名字忘记了(百度搜 oracle group bug就找得到)修改参数后要重启数据库.还有就是GROUP BY后面加ORDER BY 排序也可以解决这个问题希望对其他人有帮助...不要像我一样纠结一天时间 sql求助,找出同一单位日期最大的一条记录,且单位只能出一次 求助:物化视图日志里的更新时间字段 如何得到所有关键字 数据表的转置查询问题!!! 索引的pctfree Oracle8i在命令提示符下的导入 有没有Transact-SQL向PL/SQL转换的工具啊????? 多用户并发执行insert语句,返回值该是多少! 请问DB2,ORACLE,SYSBASE,INFORMIX,SQLSERVER的存储管理器,查询处理器和事务管理器的实现技术分别是什么 如何修改ORACLE的系统时间? imp和exp都很慢,求教 表中大量数据重复,导致索引失效
-- Create table
create table BDPC_SUB_CONVERT
(
SUB_TYPE VARCHAR2(1),
OLD_SUB_CODE VARCHAR2(10),
OLD_SUB_NAME VARCHAR2(60),
NEW_SUB_CODE VARCHAR2(10),
NEW_SUB_NAME VARCHAR2(60),
CVT_TYPE VARCHAR2(1),
DATA_DATE VARCHAR2(10)
)-------------------------------
-- Create table
create table BDPF_SUB_ACCOUNT
(
DATA_DATE VARCHAR2(10),
BRAN_CODE VARCHAR2(10),
CURR_CODE VARCHAR2(2),
SUB_CODE VARCHAR2(8),
LAST_Y_DEBIT_BAL NUMBER(16,2),
LAST_Y_CREDIT_BAL NUMBER(16,2),
Y_DEBIT_AMT NUMBER(16,2),
Y_CREDIT_AMT NUMBER(16,2),
LAST_M_DEBIT_BAL NUMBER(16,2),
LAST_M_CREDIT_BAL NUMBER(16,2),
M_DEBIT_AMT NUMBER(16,2),
M_CREDIT_AMT NUMBER(16,2),
LAST_T_DEBIT_BAL NUMBER(16,2),
LAST_T_CREDIT_BAL NUMBER(16,2),
T_DEBIT_AMT NUMBER(16,2),
T_CREDIT_AMT NUMBER(16,2),
LAST_D_DEBIT_BAL NUMBER(16,2),
LAST_D_CREDIT_BAL NUMBER(16,2),
D_DEBIT_AMT NUMBER(16,2),
D_CREDIT_AMT NUMBER(16,2),
DEBIT_BAL NUMBER(16,2),
CREDIT_BAL NUMBER(16,2),
LAST_Y_COUNT INTEGER,
Y_OPEN_COUNT INTEGER,
Y_CLOSE_COUNT INTEGER,
LAST_M_COUNT INTEGER,
M_OPEN_COUNT INTEGER,
M_CLOSE_COUNT INTEGER,
LAST_T_COUNT INTEGER,
T_OPEN_COUNT INTEGER,
T_CLOSE_COUNT INTEGER,
LAST_D_COUNT INTEGER,
D_OPEN_COUNT INTEGER,
D_CLOSE_COUNT INTEGER,
ACCT_COUNT INTEGER,
Y_DEBIT_CNT INTEGER,
Y_CREDIT_CNT INTEGER,
M_DEBIT_CNT INTEGER,
M_CREDIT_CNT INTEGER,
T_DEBIT_CNT INTEGER,
T_CREDIT_CNT INTEGER,
D_DEBIT_CNT INTEGER,
D_CREDIT_CNT INTEGER,
SUM_DEBIT_ACCUM NUMBER(16,2),
SUM_CREDIT_ACCUM NUMBER(16,2),
M_DEBIT_ACCUM NUMBER(16,2),
M_CREDIT_ACCUM NUMBER(16,2),
S_DEBIT_ACCUM NUMBER(16,2),
S_CREDIT_ACCUM NUMBER(16,2),
Y_DEBIT_ACCUM NUMBER(16,2),
Y_CREDIT_ACCUM NUMBER(16,2),
LAST_UPD_DATE VARCHAR2(10)
)
Oracle Database 10g R2 .4以下的版本都有这个问题...
是由于GROUP BY 排序使用HASH值...不是像9I一样使用SORT...
具体原因我也不清楚,反正网上都这么说的然后有个参数可以改为不用HAHS排序来解决这个问题,参数名字忘记了(百度搜 oracle group bug就找得到)修改参数后要重启数据库.还有就是GROUP BY后面加ORDER BY 排序也可以解决这个问题希望对其他人有帮助...不要像我一样纠结一天时间