|
<p>纯sql编写 两张表统计的问题</p>
<p><img src="http://img.baidu.com/img/iknow/icn_point.gif"> 悬赏分:5 -</p>
<p>解决时间:2010-9-25 10:39</p>
<p>表 A</p>
<p>id type_id creator</p>
<p>1 01 zhang</p>
<p>2 01 zhang</p>
<p>3 02 li</p>
<p>4 03 zhang</p>
<p>表 B</p>
<p>type_id type_name</p>
<p>01 a</p>
<p>02 b</p>
<p>03 c</p>
<p>纯sql编写,不用存储过程和函数 ,展示的样子如下</p>
<p>creator type_id type_name count(typeId) type_id_2 count(type_id_2)</p>
<p>zhang 01 a 2 02 0</p>
<p>li 01 a 0 02 1</p>
<p>根据 B表动态生成的列,从A中动态生成统计数据</p>
<p>提问者: haihuo86 - 二级</p>
<p>最佳答案</p>
<p>sqlserver里的用法:</p>
<p>select creator,type_id,type_name,count_typeid,type_id_2,count_typeid2 from</p>
<p>(select creator,\'01\' type_id,type_name,sum(isnull((case when type_id=\'01\' then 1 else 0 end),0)) count_typeid,</p>
<p>\'02\' type_id_2,sum(isnull((case when type_id=\'02\' then 1 else 0 end),0)) count_typeid2 from</p>
<p>(select a.creator creator,b.type_id type_id,b.type_name type_name from a,b where a.type_id=b.type_id) c</p>
<p>group by creator,type_name) d</p>
<p>where d.count_typeid<>0 or</p>
<p>d.count_typeid2<>0;</p>
<p>如果是oracle的话,把isnull替换成nvl即可</p>
<p>还有,你好像展示的数据里,li那条的,type_id应该=b吧?</p>
<p>0</p>
<p>回答者:</p>
<p><img src="http://img.baidu.com/img/iknow/icon_guan.gif"></p>
<p><img src="http://img.baidu.com/img/iknow/icon_huizhang.gif"></p>
<p>badkano - 十四级 2010-9-9 10:59</p>
<p>我来评论>></p>
|
|