a1 -时间表
id    s2       f_data     e_data      
1   2006/1    2006/1/21   2006/1/20
2   2006/2    2006/2/21   2006/2/20
.....p1 入库表(0正常,1破损)id      a_data         a_name      address          state
1      2006/1/23       计算机       北京             1
2      2006/1/23       吹风机       上海             1
3      2006/1/23       计算机       南京             0
4      2006/2/23       吹风机       南京             0
5      2006/2/13       计算机       南京             0
6      2006/1/23       吹风机       北京             0
7      2006/2/23       计算机       北京             0
8      2006/2/23       吹风机       上海              0
.....     前台查询:
 
   开始年月 : 2006/1
   结束年月 : 2006/2
   地点   :  XXX(注意:前台输入日期只输入年月,如2006/1 也就代表 a1中的第一条)想要的报表效果:如(2006/1-2006/2)  时间    产品类别           正常产品(1)        不正常(0)      百分比  
                 
  2006/1  计算机              1200                   300           (300/1200)
  2006/1  吹风机              1200                   300           (300/1200)
  2006/2  吹风机              1200                   300           (300/1200) 请教各位要实现这样一个查询,在oracle里面怎么写存储过程
(我用asp.net2003+oracle9i)开发,报表我用水晶报表,能否给个例子        
   
 
   

解决方案 »

  1.   

    使用sum(decode(state,'1',金额,0),sum(decode(state,'0',金额,0)
      

  2.   

    补充一下楼上的
    group by  a_data,  a_name
      

  3.   

    select sum(decode(state,'1',金额,0) 正常产品,sum(decode(state,'0',金额,0)  不正常
    from 
    where to_char(a_data,'yyyy-mm') = to_char(:参数日期,'yyyy-mm')
    group by group by  a_data,  a_name
      

  4.   

    写错了
    select sum(decode(state,'1',金额,0) 正常产品,sum(decode(state,'0',金额,0)  不正常
    from p1
    where to_char(a_data,'yyyy-mm') = to_char(:参数日期,'yyyy-mm')
    group by  a_data,  a_name