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 。。。

...全文
45 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧