当前位置: 代码迷 >> Sql Server >> 高级行变列有关问题
  详细解决方案

高级行变列有关问题

热度:8   发布时间:2016-04-27 13:40:13.0
高级行变列问题
现有一张表如下
khjl qd pq rq num
张三 北京总部 华北地区 1995 4
李四 深圳总部 华南地区 1996 153
王五 上海总部 华东地区 1997 246


现在想要的结果为:

khjl qd pq 1995 1996 1997
张三 北京总部 华北地区 4 0 0
李四 深圳总部 华南地区 0 153 0
王五 上海总部 华东地区 0 0 246

请高手帮忙解答!


------解决方案--------------------
SQL code
--> 测试数据:[tbl]if object_id('[tbl]') is not null drop table [tbl]create table [tbl]([khjl] varchar(4),[qd] varchar(8),[pq] varchar(8),[rq] int,[num] int)insert [tbl]select '张三','北京总部','华北地区',1995,4 union allselect '李四','深圳总部','华南地区',1996,153 union allselect '王五','上海总部','华东地区',1997,246godeclare @str varchar(max)set @str=''select @[email protected]+','+'['+ltrim([rq])+']'+'=max(case when [rq]='+QUOTENAME([rq],'''')+' then [num] else 0 end)' from tbl group by [rq]exec('select [khjl],[qd],[pq][email protected]+' from tbl group by [khjl],[qd],[pq]')/*khjl    qd    pq    1995    1996    1997李四    深圳总部    华南地区    0    153    0王五    上海总部    华东地区    0    0    246张三    北京总部    华北地区    4    0    0*/
  相关解决方案