想对表1的FEE进行总计,条件是DEP = '1'
一开始是这么写的
select CN,SUM(FEE)  from 表1 where  DEP = '1' group by CN表1:
    CN        DEP     FEE
   0001        1      1000
   0001        1      1000
   0001        2      1000
   0001        3      1000
   0002        3      1000
   0002        3      1000结果这样发现,因为0002的纪录行没有为1的纪录,所以把0002的全部剔除了
结果:
    CN     FEE
   0001   2000
其实我想要得是下面这个结果
    CN     FEE
   0001   2000
   0002    0后来觉得可以先
select CN from 表1 group by CN
然后再left join
select CN,SUM(FEE)  from 表1 where  DEP = '1' group by CN
但总觉得这样做不得法,本人不太熟悉sql,请教这里的高人

解决方案 »

  1.   

    这个可以:
    (但是ms效率不高,而且有点取巧。。坐等牛人)(select cn, sum(fee) from T where dep='1' group by cn)
    union
    (select cn,0 from T where cn not in (select cn from T where dep='1'));
      

  2.   

      CREATE TABLE "SCOTT"."TEST_REGEX" 
       ( "USER_ID" VARCHAR2(20 BYTE), --相当于你的CN
    "USER_NAME" VARCHAR2(20 BYTE), --相当于你的DEP 
    "EMAIL" VARCHAR2(20 BYTE), 
    "FEE" NUMBER--就是你的FEE
       )TABLESPACE "USERS" ;select t1.user_id CN,nvl(t2.FEE,0) FEE
    from
    (
    select distinct user_id
    from TEST_REGEX
    ) t1 left join
    (
    select user_id,sum(FEE) FEE
    from TEST_REGEX
    where user_name='1'
    group by user_id
    )t2
    on t1.user_id=t2.user_id