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

求一汇总sql写法
设有一个表TEST(ID,收到任务时间,处理任务时间,任务金额):
SQL code
create table TEST
(
  ID     VARCHAR2(5) ,
  RE_DATE  VARCHAR2(10),
  CL_DATE   VARCHAR2(10),
  MONEY  NUMBER
)

insert into test (ID, RE_DATE,CL_DATE,MONEY) values ('1', '2012-02-10', '2012-02-20', '101');
insert into test (ID, RE_DATE,CL_DATE,MONEY) values ('2', '2012-02-10', '2012-02-20', '102');
insert into test (ID, RE_DATE,CL_DATE,MONEY) values ('3', '2012-02-16', '', '55');
insert into test (ID, RE_DATE,CL_DATE,MONEY) values ('4', '2012-04-15', '2012-05-20', '50');

如何求下列格式数据的sql,求大侠指教!
HTML code
<table border='1'>
<tr>
<td>月份</td>
<td>当月已完成条数</td>
<td>当月已完成总金额</td>
<td>累计目前未完成条数</td>
<td>累计目前未完成总金额</td>
</tr>
<tr>
<td>2012-02</td>
<td>2</td>
<td>203</td>
<td>1</td>
<td>55</td>
</tr>
<tr>
<td>2012-04</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>105</td>
</tr>
<tr>
<td>2012-05</td>
<td>1</td>
<td>50</td>
<td>1</td>
<td>55</td>
</tr>
<tr>
<td>2012-06</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>55</td>
</tr>
</table>


------解决方案--------------------
看你这个格式,建议用存储过程来写,
静态部分写死,动态数据部分用循序来写,完成一行后以</tr>结束
整个完成后</table>
------解决方案--------------------
select 
tochar(CL_DATE,"MM") '月份', 
case
when CL_DATE != null and CL_DATE != "" then sum(nvl(MONEY,0)) end '当月已完成总金额',
case
when CL_DATE != null and CL_DATE != "" then count(nvl(CL_DATE,0)) end '当月已完成条数',
case
when CL_DATE == null and CL_DATE == "" then sum(nvl(MONEY,0)) end '当月未完成总金额',
case
when CL_DATE == null and CL_DATE == "" then count(nvl(CL_DATE,0)) end '当月未完成条数',
from test group by tochar(CL_DATE,"MM")
------解决方案--------------------
什么样的数据叫“当月已完成”