当前位置: 代码迷 >> Sql Server >> 行转列(找了好久没找到结果)解决方法
  详细解决方案

行转列(找了好久没找到结果)解决方法

热度:37   发布时间:2016-04-27 16:00:03.0
行转列(找了好久没找到结果)
有表如下:

ID                       Amount                 Style
A1                       500                       重不良
A1                       300                       中不良
A1                       150                       轻不良
B1                       300                       重不良
B1                       200                       轻不良
B2                       120                       轻不良

转换后:

ID                     重不良             中不良               轻不良
A1                     500                   300                     150
B1                     300                   -                         200
B2                     -                       -                         120


测试表:

create   table   test([id]   varchar(4),   amount   int,   style   varchar(6))

insert   into   test   values( 'A1 ',500, '重不良 ')
insert   into   test   values( 'A1 ',300, '中不良 ')
insert   into   test   values( 'A1 ',150, '轻不良 ')
insert   into   test   values( 'B1 ',300, '重不良 ')
insert   into   test   values( 'B1 ',200, '轻不良 ')
insert   into   test   values( 'B2 ',120, '轻不良 ')

drop   table   test

帮忙!!谢谢

------解决方案--------------------
select ID,
sum(case when Style= '重不良 ' then Amount else 0 end) 重不良,
sum(case when Style= '中不良 ' then Amount else 0 end) 中不良,
sum(case when Style= '轻不良 ' then Amount else 0 end) 轻不良
from test group by ID
------解决方案--------------------

create table test([id] varchar(4), amount int, style varchar(20))

insert into test values( 'A1 ',500, '重不良 ')
insert into test values( 'A1 ',300, '中不良 ')
insert into test values( 'A1 ',150, '轻不良 ')
insert into test values( 'B1 ',300, '重不良 ')
insert into test values( 'B1 ',200, '轻不良 ')
insert into test values( 'B2 ',120, '轻不良 ')
  相关解决方案