2012-07-28 88 views
0

如果行存在但在我的“where”条件中没有金额,则需要将金额设置为“0”。如果该行存在但我的“where”条件中没有金额,则需要将金额设置为“0”

原始命令是:

select t.aaa, count (t.bbb), sum (t.ccc) 
from nrb t 
where t.vvv IN ('3','4','5','6','D','E','F') 
    and t.ddd like '50%' 
    and t.eee >= TO_DATE('2012/03/21','YYYY/MM/DD') 
    and t.eee <= TO_DATE('2012/07/21','YYYY/MM/DD') 
group by t.aaa 
order by t.aaa 

,其结果是:在Excel文件 “结果” 标签。

我需要此结果: “结果2”选项卡在Excel文件中。

该文件:我确实发送了完整的结果。 http://www.mediafire.com/?69cc4ay6cyt9cr9

我该怎么办?

PL/SQL 7.0.2无限用户许可

OCI:9.2

Oracle数据库:11.1.0.6.0企业

OS:Win XP的

回答

1

你可能想:

select t1.aaa, coalesce(t2.bbb_count, 0) bbb_count, 
    coalesce(t2.ccc_sum, 0) ccc_sum 
from (
    select distinct aaa 
    from nrb 
) t1 
left join (
    select t.aaa, count (t.bbb) bbb_count, sum (t.ccc) ccc_sum 
    from nrb t 
    where t.vvv IN ('3','4','5','6','D','E','F') 
    and t.ddd like '50%' 
    and t.eee >= TO_DATE('2012/03/21','YYYY/MM/DD') 
    and t.eee <= TO_DATE('2012/07/21','YYYY/MM/DD') 
    group by t.aaa 
) t2 on t1.aaa = t2.aaa 
order by t1.aaa; 
+0

它的工作。今天我学到了些东西。很多。 – 2012-07-28 12:23:05

+0

- >新问题: 这个查询会给我一个3列的表。我怎么能像Excel表一样制作表格并将“t.ddd like '50%'”“循环为”t.ddd like '55%'“”。我的意思是我将有15列与相同的行。 – 2012-07-28 12:43:27