首先,感谢楼上的同仁! 比如我在sql server 中可以这样写脚本 SELECT L_personal_ID, L_COMPANY_ID, EN_COMPANY_count, EN_PERSON_count FROM LEVYDETAIL WHERE L_LEVY = 200501 AND lyear= '2005' AND status <> '0' ORDER BY L_personal_ID, EN_COMPANY_count, EN_PERSON_count COMPUTE SUM(EN_COMPANY_count), SUM(EN_PERSON_count),
BY L_COMPANY_ID我就可以按单位进行小计,但在ORACLE 中该如何写呢?
没有什么sqlserver的经验,也没有看懂 COMPUTE 究竟要执行什么功能?有没有汉语描述啊? 是比较,还是其他什么? oracle的order by 之后,基本上没有什么其他的语句了,如果要实现功能,应该是在orderby 前面实现的吧?
COMPUTE应该是在结果集后加上一个统计行,sql server中好像可以用rollup和cube 来代替了,oracle中也有rollup和cube 的用法的; 例子:SQL> select decode(grouping(userid),1,'总合',userid) userid, 2 sum(num1),sum(num2) from test1 t 3 group by rollup(userid);USERID SUM(NUM1) SUM(NUM2) ---------- ---------- ---------- user001 12 32 user002 31 13 user003 23 32 user004 23 43 总合 89 120当然你也可以这样写: SQL> select decode(grouping(userid),1,'总合',userid) userid, 2 sum(num1),sum(num2) from test1 t 3 group by userid,rollup(userid); 不过结果跟上面的有点不一样的,而且在oracle中rollup和cube 的用法比sql server要更灵活些, 也可以参看下面的例子: http://community.csdn.net/Expert/topic/4226/4226144.xml?temp=.458523
比如我在sql server 中可以这样写脚本
SELECT L_personal_ID,
L_COMPANY_ID,
EN_COMPANY_count,
EN_PERSON_count
FROM LEVYDETAIL
WHERE L_LEVY = 200501
AND lyear= '2005'
AND status <> '0'
ORDER BY L_personal_ID,
EN_COMPANY_count,
EN_PERSON_count
COMPUTE SUM(EN_COMPANY_count),
SUM(EN_PERSON_count),
BY L_COMPANY_ID我就可以按单位进行小计,但在ORACLE 中该如何写呢?
是比较,还是其他什么?
oracle的order by 之后,基本上没有什么其他的语句了,如果要实现功能,应该是在orderby 前面实现的吧?
例子:SQL> select decode(grouping(userid),1,'总合',userid) userid,
2 sum(num1),sum(num2) from test1 t
3 group by rollup(userid);USERID SUM(NUM1) SUM(NUM2)
---------- ---------- ----------
user001 12 32
user002 31 13
user003 23 32
user004 23 43
总合 89 120当然你也可以这样写:
SQL> select decode(grouping(userid),1,'总合',userid) userid,
2 sum(num1),sum(num2) from test1 t
3 group by userid,rollup(userid);
不过结果跟上面的有点不一样的,而且在oracle中rollup和cube 的用法比sql server要更灵活些,
也可以参看下面的例子:
http://community.csdn.net/Expert/topic/4226/4226144.xml?temp=.458523
本来想结贴的,但不知怎么回事,给分都没了。