找回密码
 注册会员
查看: 1026|回复: 0

纯sql编写 两张表统计的问题

[复制链接]
发表于 2010-9-25 10:41:48 | 显示全部楼层 |阅读模式
<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>
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|文字版|手机版|小黑屋|襄阳城

GMT+8, 2025-6-25 22:13

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表