求救sql 2005 如何让一列数据变多列

来源:百度知道 编辑:UC知道 时间:2024/05/26 12:03:48
例如本来这份表是
网点名称 店主姓名 品牌
XXXX XXXX 如意卡
XXXX XXXX 新势力
XXXX XXXX 如意卡
XXXX XXXX 长途通
XXXX XXXX 如意卡
。。。。
现在要转化成为
网点名称 店主姓名 如意卡 长途通 新势力
XXXX XXXX XX XX XX
.....

如意卡,长途通,新势力分别都是int属性,由上一个表品牌中用COUNT计算数目。
请问应该如何转变?麻烦啦
sum(case when 品牌= '长途通' then 1 else 0 end )
这样显示的数据全为0,行不通。。没有统计到任何数据。
可以把品牌作为一个标识来在一次查询中同时统计不?

set nocount on;
use tempdb;
go
create table sales(sitename nvarchar(20),username nvarchar(20),brand nvarchar(20));
insert into sales select'xxxx','xxxx','如意卡'
union all select'xxxx','xxxx','新势力'
union all select'xxxx','xxxx','如意卡'
union all select'xxxx','xxxx','长途同'
union all select'xxxx','xxxx','如意卡'
go
select sitename,username,sum(case brand when '如意卡' then 1 else 0 end)如意卡,
sum(case brand when '新势力' then 1 else 0 end) as 新势力,
sum(case brand when '长途同' then 1 else 0 end) as 长途同
from sales group by sitename,username;

select sum(case when 品牌= '如意卡' then 1 else 0 end ) 如意卡 ,
sum(case when 品牌= '长途通' then 1 else 0 end ) 长途通 ,
sum(case when 品牌= '新势力' then 1 else 0 end ) 新势力 ,网点名称 店主姓名
from table
group by 网点名称 店主姓名

select 网点