sql语句高手请进,解决问题立即结贴!!!在线等待...

lci21 2002-12-19 07:51:33
已知表T结构及数据如下:
id type corp
1 A 公司1
2 B 公司2
3 A 公司3
4 A 公司1
5 C 公司1
6 B 公司3
......
......
要求统计出数据:
对于每一类别,公司1有几条数据、公司2有几条数据、、公司3有几条数据。。。

要求统计结果如下:

type 公司1 公司2 公司3 。。。
A 2 0 1 。。。
B 0 1 1 。。。
C 1 0 0 。。。

...全文
5 点赞 收藏 4
写回复
4 条回复
lci21 2002年12月20日
还是自己来吧
select * from t
drop table corpname
drop view vtest
select distinct corp into corpname from t
declare @sql varchar(4000)
set @sql='create view vtest as (select type,'

select @sql=@sql+'sum(case when corp='''+corp+'''
then 1 else 0 end) as '+corp+',' from corpname

set @sql=left(@sql,len(@sql)-1)+'from t group by type)'
print @sql
exec(@sql)
select * from vtest

faint....

有没有别的方法,用一条sql实现????
回复 点赞
lci21 2002年12月19日
没有高手吗?.....
回复 点赞
wenjy 2002年12月19日
这是一个三维交叉表,用一个sql是完成不了的.要用procedure才能完成.
我曾写过一个.
1.先找出所有的公司,并按照此结果生成表头.
2.统计数据插入.
如果是写成通过的话会比较麻烦
回复 点赞
skile 2002年12月19日
select count(id),corp from t group by corp
回复 点赞
发动态
发帖子
疑难问题
创建于2007-09-28

9304

社区成员

12.1w+

社区内容

MS-SQL Server 疑难问题
社区公告
暂无公告