读书人

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

发布时间: 2012-12-31 11:57:52 作者: rapoo

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

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


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
*/

读书人网 >SQL Server

热点推荐