这个SQL语句怎么写???

King_Style 2008-05-26 04:30:18
表有a,b,c三个字段如下:
a b c
1 11 10
2 11 20
3 22 30
4 22 40

期望输出:

a b c
1 11 10
2 11 20
小计: 30
3 22 30
4 22 40
小计: 70
总计 100

脚本要如何写呢?
...全文
387 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
phoenix213 2008-06-06
  • 打赏
  • 举报
回复
三楼为强人
oraclelogan 2008-06-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gaohaha 的回复:]
SQL codeselecta,decode(grouping_id(a,b),2,'小计',3,'总计',b),sum(c)fromtest_12groupbyrollup(b,(a,b))
[/Quote]
oracle_dba_11 2008-06-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gaohaha 的回复:]
SQL code
select a,decode(grouping_id(a,b),2,'小计',3,'总计',b),
sum(c)
from test_12
group by rollup(b,(a,b))
[/Quote]
高手,学习下
yuxingye 2008-06-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sc02051201 的回复:]
支持3楼
[/Quote]
duanrh_2000 2008-06-04
  • 打赏
  • 举报
回复
group by b字段,
select *,sum(c) from table group by b字段

语法不一定对,思想如此,多编译几次
dbcxbj 2008-06-04
  • 打赏
  • 举报
回复


嘿嘿就不和你写的一样。。。

SELECT A,DECODE(GROUPING_ID(B,A),1,'小计:',3,'总计:',B) B,SUM(C) C FROM
TEST1 GROUP BY ROLLUP(B,A);
dongriwuyu 2008-06-04
  • 打赏
  • 举报
回复
学习了
jin_ok 2008-06-04
  • 打赏
  • 举报
回复
学习
fishldr 2008-06-04
  • 打赏
  • 举报
回复
学习了
  • 打赏
  • 举报
回复
select a,decode(grouping_id(a,b),2,'小计',3,'总计',b),
sum(c)
from test_12
group by rollup(b,(a,b))
;
juanjuanPrograms 2008-05-29
  • 打赏
  • 举报
回复
厉害,学习了.
wupeng2005 2008-05-29
  • 打赏
  • 举报
回复
不错!
8193102 2008-05-28
  • 打赏
  • 举报
回复
select a,b,c from t
union all
select '99', b, sum(c) from t group by b
union all
select '99' '合计', sum(c) from t;
order by b;
8193102 2008-05-28
  • 打赏
  • 举报
回复
如果低版本的数据库,就用个UNION ALL吧,也没有什么问题
select a,b,c from t
union all
select '99', b, sum(c) from t group by b
order by b;
这样也简洁明了
steven_lover 2008-05-28
  • 打赏
  • 举报
回复
create table abc(
a number,
b number,
c number
)
insert into abc values(1,11,10);
insert into abc values(2,11,20);
insert into abc values(3,22,30);
insert into abc values(4,22,40);

SQL> select a,decode(grouping_id(a,b),2,'小计',3,'总计',b),
2 sum(c)
3 from abc
4 group by rollup(b,(a,b))
5 /

A DECODE(GROUPING_ID(A,B),2,'小? SUM(C)
---------- ---------------------------------------- ----------
1 11 10
2 11 20
小计 30
3 22 30
4 22 40
小计 70
总计 100

7 rows selected
jy02221378 2008-05-28
  • 打赏
  • 举报
回复
学习了
sc02051201 2008-05-28
  • 打赏
  • 举报
回复
支持3楼
maplenet 2008-05-28
  • 打赏
  • 举报
回复
三楼的怎用不了,说缺少有括号???为什么?
在9i中不支持么?
hebo2005 2008-05-27
  • 打赏
  • 举报
回复
4.GROUPING_ID()函数的使用

GROUPING_ID()函数可接受一列或多列,它返回GROUPING位向量的十进制值。GROUPING位向量的计算方法是按照顺序对每一列调用GROUPING()函数的结果组合起来。它的作用是借助HAVING子句对记录进行过滤,将不包含小计或总计的记录除去。

GROUPING位向量的十进制值,我们由前面的介绍已知道当GROUPING()的列值为空时它返回1,当非空时返回0;

比如:division_id,job_id两列都为非空,GROUPING()都返回0。将这两列的值组合起来,形成一个位向量00,十进制为0。即,当division_id,job_id都非空时,GROUPING_ID()返回0。(这里要特别注意division_id与job_id两列的顺序)下面举个例子:

select division_id,job_id,

GROUPING(division_id) AS div_grp,

GROUPING(job_id) AS job_grp,

GROUPING_ID(division_id,job_id) AS grp_id,

SUM(salary)

from employees2

group by CUBE(division_id,job_id)

order by division_id;



DIVISI JOB_ID DIV_GRP JOB_GRP GRP_ID SUM(SALARY)

------ ------ ---------- ---------- ---------- -----------

BUS MGR 0 0 0 530000

BUS PRE 0 0 0 800000

BUS WOR 0 0 0 280000

BUS 0 1 1 1610000

OPE ENG 0 0 0 245000

OPE MGR 0 0 0 805000

OPE WOR 0 0 0 270000

OPE 0 1 1 1320000

SAL MGR 0 0 0 4446000

SAL WOR 0 0 0 490000

SAL 0 1 1 4936000

SUP MGR 0 0 0 465000

SUP TEC 0 0 0 115000

SUP WOR 0 0 0 435000

SUP 0 1 1 1015000

ENG 1 0 2 245000

MGR 1 0 2 6246000

PRE 1 0 2 800000

TEC 1 0 2 115000

WOR 1 0 2 1475000

1 1 3 8881000



已选择21行。

下面是一个使用GROUPING_ID过滤不包含小计或总计的记录的例子:

select division_id,job_id,

GROUPING_ID(division_id,job_id) AS grp_id,

SUM(salary)

from employees2

group by CUBE(division_id,job_id)

having grouping_id(division_id,job_id)>0

order by division_id;

DIVISI JOB_ID GRP_ID SUM(SALARY)

------ ------ ---------- -----------

BUS 1 1610000

OPE 1 1320000

SAL 1 4936000

SUP 1 1015000

ENG 2 245000

MGR 2 6246000

PRE 2 800000

TEC 2 115000

WOR 2 1475000

3 8881000

================================================

呵呵,这个我也不知道,学习学习
DHC_KULOU 2008-05-27
  • 打赏
  • 举报
回复
grouping_id(a,b)
是什么意思啊
加载更多回复(9)

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧