SQL查询的一个问题?

sxssg 2011-12-03 11:27:38
格式如下:

区域 厂家
龙泉 诺西
高新 华为
高新 诺西
高新 诺西
高新 诺西

问题:想查出每个区域中厂家为华为和厂家为诺西的计数,求语句,谢谢!结果应该是


区域 诺西 华为
龙泉 1 0
高新 3 1
...全文
54 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengxuan 2011-12-03
  • 打赏
  • 举报
回复

if object_id('tb','U') is not null
drop table tb
go
create table tb
(
区域 varchar(10),
厂家 varchar(10)
)
go
insert into tb
select '龙泉','诺西' union all
select '高新','华为' union all
select '高新','诺西' union all
select '高新','诺西' union all
select '高新','诺西'
go
declare @str varchar(max)
select @str=isnull(@str+',','')+'['+厂家+']=sum(case when 厂家='''+厂家+''' then 1 else 0 end)' from (select distinct 厂家 from tb) t1
exec('select 区域,'+@str+' from tb group by 区域')
go
/*
区域 华为 诺西
---------- ----------- -----------
高新 1 3
龙泉 0 1

(2 行受影响)

*/
PB菜鸟 2011-12-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ssp2009 的回复:]

SQL code
select 区域,诺西=sum(case when 厂家='诺西' then 1 else 0 end),
华为=sum(case when 厂家='华为' then 1 else 0 end)
from tb group by 区域
[/Quote]
AcHerat 元老 2011-12-03
  • 打赏
  • 举报
回复

select 区域,sum(case when 厂家='华为' then 1 else 0 end) [华为],
sum(case when 厂家='诺西' then 1 else 0 end) [诺西]
from tb
group by 区域
--小F-- 2011-12-03
  • 打赏
  • 举报
回复
select
区域,
sum(case 厂家 when '诺西' then 1 else 0 end) as 诺西,
sum(case 厂家 when '华为' then 1 else 0 end) as 华为
from
tb
group by
区域
快溜 2011-12-03
  • 打赏
  • 举报
回复
select 区域,诺西=sum(case when 厂家='诺西' then 1 else 0 end),
华为=sum(case when 厂家='华为' then 1 else 0 end)
from tb group by 区域

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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