想对表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,请教这里的高人
一开始是这么写的
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,请教这里的高人
(但是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'));
( "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