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

SQL行转置查询求数量,该如何解决

2013-04-02 
SQL行转置查询求数量要求用SQL2000的写法unit表 数据如下:idunitNm1unitNm12unitNm23unitNm34unitNm45unit

SQL行转置查询求数量
要求用SQL2000的写法

unit表 数据如下:


id    unitNm
1     unitNm1
2     unitNm2
3     unitNm3
4     unitNm4
5     unitNm5
6     unitNm6
7     unitNm7
8     unitNm8
9     unitNm9
10    unitNm10


tabel1表 数据如下:

unitNm       lx
unitNm1      大1
unitNm1      大2 
unitNm2      小1 
unitNm4      小2 
unitNm5      大2 
unitNm1      大1 
unitNm1      中 
unitNm3      大2 
unitNm1      小1 
unitNm1      中 
unitNm1      大1 
unitNm7      大1 
unitNm1      大1 
unitNm8      中 
unitNm1      小1 
unitNm9      小1 
unitNm1      大1 
unitNm10     大2 


得到数据表

   id         大     中   小
unitNm1       5     2    3
unitNm2       0     0    2
unitNm3       1     0    0
unitNm4       0     0    1
unitNm5       1     0    0
unitNm6       0     0    0
unitNm7       1     0    0
unitNm8       0     1    0
unitNm9       0     0    0 
unitNm10      1     0    0


[解决办法]
select a.unitNm  as id
   ,sum(case when b.lx like '大%' then 1 else 0 end) as [大]
   ,sum(case when b.lx like '中%' then 1 else 0 end) as [中]
   ,sum(case when b.lx like '小%' then 1 else 0 end) as [小]
from unit a left join tabel1 b
on a.unitNm = b.unitNm 
group by a.unitNm

热点排行