读书人

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

发布时间: 2013-04-02 12:35:26 作者: rapoo

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

读书人网 >SQL Server

热点推荐