mssql 行列转换(置换)

转换前 查寻的结果为 :

 

Area      Date     Count
BeiJing     2007-01-01  100000
GuangZhou  2007-01-01  200000
BeiJing     2007-02-19  300000
GuangZhou  2007-02-19  400000
BeiJing    2007-03-21   500000
GuangZhou  2007-03-21   600000

 

转化后(求和):

  Area   2007-01-01 2007-02-19  2007-03-21 

  BeiJing     100000  300000     500000
 GuangZhou  200000   400000     600000

 

create table #TABLE (Area varchar(10), Date varchar(10), Count int)
go
insert into #TABLE (Area, Date, Count)
values ('BeiJing', '2007-01-01',100000)
insert into #TABLE (Area, Date, Count)
values ('GuangZhou', '2007-01-01',200000)
insert into #TABLE (Area, Date, Count)
values ('BeiJing','2007-02-19',300000)
insert into #TABLE (Area, Date, Count)
values ('GuangZhou','2007-02-19',400000)
insert into #TABLE (Area, Date, Count)
values ('BeiJing','2007-03-21',500000)
insert into #TABLE (Area, Date, Count)
values ('GuangZhou','2007-03-21',600000)
go


--mssql2000下验证 通过
select * from  #table
SELECT Area,
 '2007-01-01'=SUM(CASE Date WHEN '2007-01-01'  THEN [Count] END),
 '2007-02-19'=SUM(CASE Date WHEN '2007-02-19'  THEN [Count] END),
 '2007-03-21'=SUM(CASE Date WHEN '2007-03-21'  THEN [Count] END)
FROM #table
GROUP BY Area
go

 

------mssql2005下验证 通过--------------------------------------------------------------------------------------
SELECT *  FROM
#TABLE
PIVOT(SUM([Count]) FOR Date IN (
 [2007-01-01],[2007-02-19],[2007-03-21])) b

 

 

 

/*----------------demo----------------------------------------------------------------------------------------*/

/*  create table Inventory (
     item  varchar(100),
     color varchar(100),
     quantity int
  )*/
  /*
 
  insert into Inventory values('Table','Blue',124);
  insert into Inventory values('Table','Red',223);
  insert into Inventory values('Chair','Blue',101);
  insert into Inventory values('Chair','Red',null);
  insert into Inventory values('Chair','Red',210); */
 
 按Item分类,将数据按下列方式进行统计显示
         Item  Red  Blue

 

  select  item,'Blue'=sum(case color when 'Blue' then quantity end ),
              'Red'=sum(case color when 'Red' then quantity end)
              from inventory group by item

 


            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值