首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

讨教:怎么实现列转换成行

2012-12-31 
讨教:如何实现列转换成行如何把上面的表格转换成下面这样的结构我会只需一列转换成行的,像这种转换几列的

讨教:如何实现列转换成行
讨教:怎么实现列转换成行

如何把上面的表格转换成下面这样的结构
我会只需一列转换成行的,像这种转换几列的数据并合并到一列的,就不知道如何下手了,求转换的方法,谢谢!!
[解决办法]
转换一列会了,两列不就是在一列的基础上 再次转换吗?
[解决办法]


if OBJECT_ID('TableA') is not null
drop table TableA

go
create table TableA
(
单号 nvarchar(10),
材料1名称 nvarchar(20),
材料1重量 int,
材料1价格 int,
材料2名称 nvarchar(20),
材料2重量 int,
材料2价格 int
)

go
insert into TableA values
('P001','A',10,10,'B',20,10),
('P002','B',10,5,'A',20,20),
('P003','C',5,10,'A',5,5),
('P004','B',10,5,NULL,NULL,NULL)

--SQL
select 

单号,

case when 材料1名称='A' then 材料1重量 
     when 材料2名称='A' then 材料2重量
     else null end A重量,
case when 材料1名称='A' then 材料1价格
     when 材料2名称='A' then 材料2价格
     else null end A价格,
     
case when 材料1名称='B' then 材料1重量 
     when 材料2名称='B' then 材料2重量
     else null end B重量,
case when 材料1名称='B' then 材料1价格
     when 材料2名称='B' then 材料2价格
     else null end B价格,
     
case when 材料1名称='C' then 材料1重量 
     when 材料2名称='C' then 材料2重量
     else null end C重量,
case when 材料1名称='C' then 材料1价格
     when 材料2名称='C' then 材料2价格
     else null end C价格
from TableA 


--结果集
/*
单号    A重量  A价格  B重量   B价格   C重量   C价格
P00110   10   20      10  NULL  NULL
P00220   20  10  5   NULL  NULL
P0035   5  NULL  NULL  5      10
P004NULL   NULL  10  5      NULL    NULL
*/

热点排行