日期:2014-05-17  浏览次数:20618 次

请教整理一个sql,用来作报表处理
已知一表三个字段分别是名字、价格、类别,创建如下:
create table test(
name varchar2(100),price number,type varchar2(100)
);
插入数据:
insert into test values ('土',1000,'进');
insert into test values ('沙',500,'进');
insert into test values ('泥',300,'进');
insert into test values ('泥',100,'出');
insert into test values ('石',200,'出');
commit;
现在我的目的是查询到进的price为正数,出的为负数,我整理的思路和sql如下:
先把'出'的数据乘以-2插入到表中insert into test (select name,price*(-2),'临时' from test where type='出');
commit;
然后直接sum(price)就可以查询出正确结果select name,sum(price) from test group by name;
最后再删除临时数据delete from test where type='3';commit;


好吧没有报表经验,如何只用select来处理呢?
sql 报表

------解决方案--------------------
引用:
最后再删除临时数据delete from test where type='临时';commit;

粗心了



SELECT NAME,SUM(DECODE(TYPE,'进',PRICE,'出',(-1)*PRICE,0)) AS PRICE FROM TEST GROUP BY NAME;