把3条sql合为1条。  sql1/sql2 为同期比sql1="select sum(num) from 销售数据表 where region||unit='北京百盛' and h_date=to_date('2009-05-20','yyyy-mm-dd')"sql2="select sum(num) from 销售数据表 where region||unit='北京百盛' and h_date=to_date('2009-05-20','yyyy-mm-dd')-365" sql="select b.head as 负责人,a.region as 地区,a.unit as 单店,a.dd_level||a.areas as 类别 from 单店基础信息表new a,单店营运职责表 b where 1=1"这合并的语句好像有问题,哪位高手指点下select b.head as 负责人,a.region as 地区,a.unit as 单店,a.dd_level||a.areas as 类别 ,(1-(round((select sum(num) from 销售数据表 where region||unit='北京百盛' and h_date=to_date('2009-05-22','yyyy-mm-dd'))/(select sum(num) from 销售数据表 where region||unit='北京百盛' and h_date=to_date('2009-05-22','yyyy-mm-dd')-365),0))) as销量同期比 from 单店基础信息表new a,单店营运职责表 b,销售数据表 c

解决方案 »

  1.   

    lz的几个sql涉及到了3张表,他们之间有什么关联?
      

  2.   


    你执行的时候报什么错误呢?我看到一处语法错误:select b.head as 负责人,a.region as 地区,a.unit as 单店,a.dd_level||a.areas as 类别 ,(1-(round((select sum(num) from 销售数据表 where region||unit='北京百盛' and h_date=to_date('2009-05-22','yyyy-mm-dd'))/(select sum(num) from 销售数据表 where region||unit='北京百盛' and h_date=to_date('2009-05-22','yyyy-mm-dd')-365),0))) as 销量同期比 from 单店基础信息表new a,单店营运职责表 b,销售数据表 cas销量同期比 你写到一起去了,应该改为 as 销量同期比
      

  3.   

    试试这个
    select max(b.head) as 负责人,a.region as 地区,a.unit as 单店,max(a.dd_level||a.areas) as 类别 ,
    1-round(sum(c.num)/sum(d.num),0) as 销量同期比
    from 单店基础信息表new a,单店营运职责表 b,销售数据表 c,销售数据表 d
    where a.region=b.region and a.商场=b.商场
     and  a.region=c.region and a.商场=c.商场
     and  a.region=d.region and a.商场=d.商场
     and  c.h_date=d.h_date+365
     and  c.date=to_date('2009-05-20','yyyy-mm-dd')
     and  c.region||c.unit='北京百盛'
    group by a.region,a.unit;
      

  4.   

    无效的用户.表.列,表.列,或列规格  My God
      

  5.   

    and  c.date=to_date('2009-05-20','yyyy-mm-dd')
    改成
    and  c.h_date=to_date('2009-05-20','yyyy-mm-dd')
      

  6.   

    1-round(sum(c.num)/sum(d.num),0) as 销量同期比
    改成
    1-round(sum(c.num)/sum(d.num),2) as 销量同期比
    再试
      

  7.   

    销量同期比 是怎么计算的,我那个计算方法是照着你给的那个sql写的,也许我理解的不对
      

  8.   

    那把sql里的,“1-”去了,看看数对不对
      

  9.   

    合并一起写的sql语句,求出的sum(c.num)和sum(d.num) 结果一样 导致相除结果为1、分别算结sum(c.num)和sum(d.num)的结果是不相同的。