日期:2014-05-17  浏览次数:20498 次

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