首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

子查询的值多于一个的有关问题

2012-01-21 
子查询的值多于一个的问题这样写有什么毛病啊怎么改啊select,c21.a0190,SUM(selectcasewhenright(c105.gz_

子查询的值多于一个的问题
这样写有什么毛病啊   怎么改啊
  select  

,c21.a0190

,SUM(select   case   when   right(c105.gz_ym,2)= '01 '   then   isnull(c10511,0)   else   0   end   from   c105,c21   where   c105.a0188=c21.a0188   and   c105.gz_ym=c21.gz_ym)   as   '一月 '

from   c21,deptcode,c105
where   c21.dept_id=deptcode.dept_id

SUM函数   是不是不能这么用?去了SUM出现子查询的值多于一个


[解决办法]
这样?

select
c21.a0190,
SUM(case when right(c105.gz_ym,2)= '01 ' then isnull(c10511,0) else 0 end) as '一月 '
from c21
join c105
on c105.a0188=c21.a0188 and c105.gz_ym=c21.gz_ym
join deptcode
on c21.dept_id=deptcode.dept_id
group by c21.a0190
[解决办法]
select

,c21.a0190

,SUM(case when right(c105.gz_ym,2)= '01 ' then isnull(c10511,0) else 0 end ) as '一月 '

from c21,deptcode,c105
where c21.dept_id=deptcode.dept_id and c105.a0188=c21.a0188 and c105.gz_ym=c21.gz_ym

热点排行