销售流水号 机构 销售状态 销售时间 货品编号 更新时间 销售类型
7951 北京 销售正常 2010-4-25 358208032232248 2010-4-25 23:02:02 正销量
7951 北京 销售退货 2010-4-28 358208032232248 2010-4-28 8:56:45 负销量
8086 北京 销售正常 2010-4-30 358208032232248 2010-4-30 11:03:43 正销量
8086 北京 销售退货 2010-5-3 358208032232248 2010-5-3 15:13:42 负销量
12132 北京 销售正常 2010-5-13 358208032232248 2010-5-13 16:02:11 正销量(1)需要构建试图:view_SaleWBK;(2) 当查询4月份确认销量时,只显示30日销量;
select * From view_SaleWBK k
where k.销售时间 >= to_date('2010-04-01', 'yyyy-mm-dd')
and k.销售时间 <= to_date('2010-04-30', 'yyyy-mm-dd');
结果:8086 北京 销售正常 2010-4-30 358208032232248 2010-4-30 11:03:43 正销量(3)当查询截止到5月4号时,不显示任何记录;
select *  
From view_SaleWBK k
where k.销售时间 >= to_date('2010-04-01', 'yyyy-mm-dd')
and k.销售时间 <= to_date('2010-05-4', 'yyyy-mm-dd');(4) 当查询5月份确认销量时,只显示13日销量;
select *  
From view_SaleWBK k
where k.销售时间 >= to_date('2010-05-01', 'yyyy-mm-dd')
and k.销售时间 <= to_date('2010-05-30', 'yyyy-mm-dd');
结果:12132 北京 销售正常 2010-5-13 358208032232248 2010-5-13 16:02:11 正销量

解决方案 »

  1.   

    如果表不是很大的情况下 可以考虑
    查询4月份确认销量 
    select * From view_SaleWBK k
    where to_char(k.销售时间,'yyyymm') = '201004';查询5月份确认销量 
    select * From view_SaleWBK k
    where to_char(k.销售时间,'yyyymm') = '201005';当查询截止到5月4号时
    select * From view_SaleWBK k
    where to_char(k.销售时间,'yyyymmdd') <= '20100504';
      

  2.   

    之前写的试图是获取最后一条确认销量的数据,但是如果不加时间控制,查询出来的数据时错误的。create or replace view view_SaleWBK as
    select *
    From saleInfo a
    where 1 = 1
    and a.销售类型 = 正销量
    and a.销售时间 = (
                           select max(w.销售时间)
                           from saleInfo w
                           where 1 = 1
                           and w.货品编号=a.货品编号
                     )
      

  3.   

    这样可以不?  建立视图的时候添加个 字符型的时间字段 create or replace view view_SaleWBK as
    select a.*,
    to_char(k.销售时间,'yyyymmdd') sell_time    -- 那在视图这添加个字段???
    From saleInfo a
    where 1 = 1
    and a.销售类型 = 正销量
    and a.销售时间 = (
      select max(w.销售时间)
      from saleInfo w
      where 1 = 1
      and w.货品编号=a.货品编号
      )
      

  4.   


    ??????create or replace view view_SaleWBK as
    select a.*,
    to_char(k.销售时间,'yyyymmdd') sell_time    -- 那在视图这添加个字段???
    From saleInfo a
    where 1 = 1
    and a.销售类型 = 正销量
    and to_char(a.销售时间,'yyyymmdd') = (                  -- 这里改改呵呵  
      select max(to_char(销售时间,'yyyymmdd'))           --呵呵 我水平菜  
      from saleInfo w
      where 1 = 1
      and w.货品编号=a.货品编号
      )
      

  5.   

    reate or replace view view_SaleWBK as
    select a.*,
    to_char(k.销售时间,'yyyymmdd') sell_time    -- 那在视图这添加个字段???
    From saleInfo a
    where 1 = 1
    and a.销售类型 = 正销量
    and to_char(a.销售时间,'yyyymmdd') = (                  -- 这里改改呵呵  
      select to_char(销售时间,'yyyymmdd')  
    -- 按日分组如果是当月的 可以写成 to_char(时间,'yyyymm')
            max(to_char(销售时间,'yyyymmdd'))           --呵呵 我水平菜  
      from saleInfo w
      where 1 = 1
      and w.货品编号=a.货品编号
     这里group by 一下  )
    试试咯