select
a.date,
a.tag,
decode(a.tag,'收入',a,AMT,'') 收入,
decode(a.tag,'付出',a.AMT,'') 付出
from
tablename a
a.date,
a.tag,
decode(a.tag,'收入',a,AMT,'') 收入,
decode(a.tag,'付出',a.AMT,'') 付出
from
tablename a
解决方案 »
- 关于在eclipse的data source explorer上连接oracle 11g数据库的存储过程问题
- 我从别人的机器上拷来ORACLE的数据文件可以使用么?
- 急:AIX 配置ORACLE后一直在重启中
- ORACLE中执行的SQL语句中的参数该如何调用?
- Net Configuration Assistant的快捷方式被删了,要怎么样才能运行Net Configuration Assistant?
- 一个小问题
- 测试一下
- 请问Oracle有哪些内置对象,类似sysdate
- 怎样改掉internal用户的密码?
- Oracle硬件要求,谢谢!100
- 导入导出怎么这么死板?
- 导库问题100分(急!!!)
select a.date,sum(income) 收入总额,sum(payamt) 付出总额
from
(
select a.date,decode(a.tag,'收入',a.amt,0) income ,0 payamt
from tablename a
union all
select a.date,0 income ,decode(a.tag,'付出',a.amt,0) payamt
from tablename a
)
group by a.date
SQL> alter session set nls_date_format='YYYY-MM-DD';会话已更改。SQL> create table a
2 (opdate date,
3 tag varchar2(4),
4 amt number(12,2)
5 );表已创建。SQL> insert into a values ('2004-11-1','收入','134.00');已创建 1 行。SQL> insert into a values ('2004-11-2','收入','3790.01');已创建 1 行。SQL> insert into a values ('2004-11-2','支出','1000.00');已创建 1 行。SQL> insert into a values ('2004-11-1','支出','1000.00');已创建 1 行。SQL> insert into a values ('2004-11-3','收入','6000.50');已创建 1 行。SQL> insert into a values ('2004-11-5','收入','4201.00');已创建 1 行。SQL> commit;提交完成。SQL> select * from a;OPDATE TAG AMT
---------- ---- ----------
2004-11-01 收入 134
2004-11-02 收入 3790.01
2004-11-02 支出 1000
2004-11-01 支出 1000
2004-11-03 收入 6000.5
2004-11-05 收入 4201 已选择6行。SQL> --查询所有数据
SQL> select opdate,
2 tag,
3 decode(tag,'收入',a.amt,'') 收入,
4 decode(tag,'支出',a.amt,'') 支出
5* from a;OPDATE TAG 收入 支出
---------- ---- ---------- ----------
2004-11-01 收入 134
2004-11-02 收入 3790.01
2004-11-02 支出 1000
2004-11-01 支出 1000
2004-11-03 收入 6000.5
2004-11-05 收入 4201 已选择6行。SQL> --查询每日收入和支出合计,以及总合计(rollup函数) 1 select opdate 日期,
2 nvl(sum(decode(tag,'收入',a.amt,'')),0) 收入,
3 nvl(sum(decode(tag,'支出',a.amt,'')),0) 支出
4 from a
5* group by rollup(opdate)日期 收入 支出
---------- ---------- ----------
2004-11-01 134 1000
2004-11-02 3790.01 1000
2004-11-03 6000.5 0
2004-11-05 4201 0
14125.51 2000 SQL> --查询每日收入和支出合计,以及总合计(cube函数) 1 select opdate 日期,
2 nvl(sum(decode(tag,'收入',a.amt,'')),0) 收入,
3 nvl(sum(decode(tag,'支出',a.amt,'')),0) 支出
4 from a
5* group by cube(opdate)日期 收入 支出
---------- ---------- ----------
2004-11-01 134 1000
2004-11-02 3790.01 1000
2004-11-03 6000.5 0
2004-11-05 4201 0
14125.51 2000
SQL> create table a
2 (opdate date,
3 tag varchar2(4),
4 amt number(12,2)
5 );表已创建。SQL> insert into a values ('2004-11-1','收入','134.00');已创建 1 行。SQL> insert into a values ('2004-11-2','收入','3790.01');已创建 1 行。SQL> insert into a values ('2004-11-2','支出','1000.00');已创建 1 行。SQL> insert into a values ('2004-11-1','支出','1000.00');已创建 1 行。SQL> insert into a values ('2004-11-3','收入','6000.50');已创建 1 行。SQL> insert into a values ('2004-11-5','收入','4201.00');已创建 1 行。SQL> commit;提交完成。SQL> select * from a;OPDATE TAG AMT
---------- ---- ----------
2004-11-01 收入 134.00
2004-11-02 收入 3790.01
2004-11-02 支出 1000
2004-11-01 支出 1000
2004-11-03 收入 6000.5
2004-11-05 收入 4201已选择6行。SQL> --查询所有数据
SQL> select opdate,
2 tag,
3 decode(tag,'收入',a.amt,'') 收入,
4 decode(tag,'支出',a.amt,'') 支出
5* from a;OPDATE TAG 收入 支出
---------- ---- ---------- ----------
2004-11-01 收入 134
2004-11-02 收入 3790.01
2004-11-02 支出 1000
2004-11-01 支出 1000
2004-11-03 收入 6000.5
2004-11-05 收入 4201 已选择6行。SQL> --查询每日收入和支出合计,以及总合计(rollup函数) 1 select opdate 日期,
2 nvl(sum(decode(tag,'收入',a.amt,'')),0) 收入,
3 nvl(sum(decode(tag,'支出',a.amt,'')),0) 支出
4 from a
5* group by rollup(opdate)日期 收入 支出
---------- ---------- ----------
2004-11-01 134 1000
2004-11-02 3790.01 1000
2004-11-03 6000.5 0
2004-11-05 4201 0
14125.51 2000 SQL> --查询每日收入和支出合计,以及总合计(cube函数) 1 select opdate 日期,
2 nvl(sum(decode(tag,'收入',a.amt,'')),0) 收入,
3 nvl(sum(decode(tag,'支出',a.amt,'')),0) 支出
4 from a
5* group by cube(opdate)日期 收入 支出
---------- ---------- ----------
2004-11-01 134 1000
2004-11-02 3790.01 1000
2004-11-03 6000.5 0
2004-11-05 4201 0
14125.51 2000